gpt4 book ai didi

c# - 更新 GAC dll

转载 作者:太空狗 更新时间:2023-10-29 19:41:22 25 4
gpt4 key购买 nike

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

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

问题是 GAC 中没有安装 DLL。我通过右键单击 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 中正常安装。

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

更新

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

我还尝试将其作为内容文件添加到主要项目(然后将内容文件添加到 GAC)。但随后它提示程序集未签名。

所以我还是卡住了。

最佳答案

更新 [AssemblyFileVersion] 以修复错误通常是正确的方法,但如果您对 GAC 中的程序集这样做会变得不确定。您冒着破坏另一个也使用程序集的应用程序的风险,并且无意中依赖于错误行为才能正常运行。像重命名公共(public)方法这样的无意错误当然总是破坏应用程序的好方法,通往 DLL hell 的道路是由许多善意铺就的,但结果却很糟糕。

然而,GAC 只关注 [AssemblyVersion] 而忽略文件版本。要让更新的程序集替换现有的程序集,您必须先删除旧的程序集。这是有意为之,防止意外更换。

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

关于c# - 更新 GAC dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com