【发布时间】:2011-08-01 12:42:15
【问题描述】:
我有一个关于 2 个 CLR 版本的问题,即 .NET 框架的第 2 版和第 4 版,它们使用不同的 GAC 位置。我构建了一个客户端应用程序,它引用了来自 v2 GAC (C:\Windows\Assembly) 的程序集“X”。我现在正在更新程序集“X”以在 .NET 框架的 v4 (C:\Windows\Microsoft.NET\assembly) 上运行,但是,我不想重新编译客户端应用程序。请注意,在安装到 v4 GAC 之前,程序集“X”已从 v2 GAC 中删除。
是否可以创建一个发布者策略文件,将曾经驻留在 CLR 版本 2 中的程序集重定向到 CLR 版本 4?如果有,这是如何实现的?
我已经搜索了 MSDN,并且了解到在 assemblyBinding 元素上有一个 applyTo 字段,您可以在其中指定 .NET 框架的版本,但这似乎涵盖了整个绑定。
我想要的是这样的:
<bindingRedirect oldVersion="1.0.0.0" .Net 2 newVersion="2.0.0.0" .Net 4/>
我在这里看到http://msdn.microsoft.com/en-us/magazine/dd727509.aspx,CLR v2.0 应用程序现在无法在 GAC 中看到 CLR v4.0 程序集。但是,您可以通过以下方式强制应用使用更新后的 CLR:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
那么将这与发布商政策相结合就足够了吗,还是有其他方法?
【问题讨论】:
标签: c# .net visual-studio-2010 clr gac