更新GAC dll

jga*_*fin 8 c# gac setup-project visual-studio-2010

我在GAC中注册了一个DLL,其中有一个错误(v4.2.0).

因此,我修复了该错误,仅更新了文件版本(v4.2.1)(保留了程序集版本,v4.2.0)并构建了一个新的MSI包.

问题是DLL没有安装在GAC中.我通过右键单击DLL验证了这一点C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL\v4.0_4.2.0.0__2269313d92725976并检查了文件版本,这仍然v4.2.0是没有在其下创建的其他文件夹C:\Windows\Microsoft.NET\assembly\GAC_MSIL\MyDLL.

但!如果我卸载第一个版本,然后安装新的DLL,它就会在GAC中安装好.

我是以错误的方式接近这个吗?我们的应用程序设置为使用特定版本,因此只需创建程序集版本v4.3.0并将其安装在GAC中就行不通.

更新

我找到了有关发布商政策的文章(http://support.microsoft.com/kb/891030)并正在尝试这样做.我已经生成了策略程序集.但是当我尝试将它添加到安装项目时,Visual Studio崩溃=(

我还尝试将其作为内容文件添加到主项目中(然后将内容文件添加到GAC).但后来它抱怨集会没有签署.

所以我仍然被困住了.

Han*_*ant 5

更新[AssemblyFileVersion]进行错误修复通常是正确的方法,尽管如果您在GAC中对程序集进行修改,这会很麻烦。您可能会损坏另一个也使用该程序集的应用程序,并且无意中依赖于越野车行为才能正常运行。重命名公共方法之类的无意错误当然始终是破坏应用程序的一种好方法,通往DLL Hell的道路上铺满了很多好意,但结果却很糟糕。

但是,GAC仅注意[AssemblyVersion],而忽略文件版本。要获取更新的部件以替换现有的部件,您必须先删除旧的部件。这是有意的,可防止意外更换。

<bindingRedirect>您想要修复的应用程序的.config文件中的A 比发布者策略更容易上手。