首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新GAC dll

更新GAC dll
EN

Stack Overflow用户
提问于 2012-12-18 09:30:58
回答 2查看 13.7K关注 0票数 8

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

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

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

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

我是不是走错路了?我们的应用程序被设置为使用特定版本,因此只创建程序集版本v4.3.0并将其安装在GAC中是行不通的。

更新

我已经找到了一篇关于发行者策略( publisher policies,http://support.microsoft.com/kb/891030)的文章,并且正在尝试这样做。我已经生成了策略程序集。但是,当我试图将Visual添加到安装项目=(

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

所以我还是被困住了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-18 10:33:53

为bug修复更新AssemblyFileVersion通常是正确的方法,尽管对于GAC中的程序集来说,它会变得不确定。您可能会破坏另一个也使用程序集的应用程序,并且无意中依赖于错误行为才能正常运行。一个无意中的错误,比如重命名一个公共方法,当然是打破一个应用程序的好方法,通往DLL地狱的道路上铺满了许多坏的意图。

但是,GAC只关注AssemblyVersion,忽略文件版本。要使更新的程序集替换现有程序集,您必须首先删除旧的程序集。这是故意的,防止意外更换。

您想要修复的应用程序的<bindingRedirect>文件中的.config将比发行者策略容易得多。

票数 5
EN

Stack Overflow用户

发布于 2012-12-18 10:22:43

我相信这与.NET程序集的参数有关,GAC使用这些参数来给它一个唯一的标识符。如果程序集版本是这些惟一参数之一,但文件版本不是,这可能会解释您的症状。具体来说,这涉及到GACs对强命名程序集的需求。

这个链接说明了

http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13929914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档