gpt4 book ai didi

.net - 在 GAC 中更新 DLL

转载 作者:行者123 更新时间:2023-12-04 19:54:31 24 4
gpt4 key购买 nike

我有几个第三方应用程序引用的 API DLL。

其中一些应用程序在更新方面需要两种方式。1)我想要最新的东西2) 不要经常更新我的直接二进制文件

有将 DLL 移动到 GAC 中并编写另一个 DLL 的想法,该 DLL 只是 GAC 中 DLL 的包装器(第 3 方应用程序随后将引用它)。这允许在 GAC 中更新业务逻辑(经常更改的部分),而包装器 DLL 仅需要在新功能可用时更新。

GAC 旨在保留版本化的 DLL。因此,包装器 DLL 将引用特定版本的 API DLL。更新 GAC DLL 以使其引用不中断但二进制内容不同有多难?

更新时不更改GAC DLL版本就这么简单吗?

谢谢。

最佳答案

How difficult is it to update the GAC DLL so that the references to it don't break but the binary contents differs?

你不能直接这样做。您只能将已签名的 DLL 放入 GAC。当您针对已签名的 DLL 构建应用程序时,编译器会获取 DLL 内容的哈希值并将其放入应用程序中。当 .NET 运行时加载应用程序时,它会根据 DLL 的真实副本检查此哈希值。如果此 DLL 与您构建的那个不匹配,.NET 将引发异常。

解决这个问题的方法是:

  1. 为您的 GAC DLL 制定版本编号方案。这可以像在构建时始终增加版本号一样简单。
  2. 在您的 app.config 中,添加 <bindingRedirect> 元素

绑定(bind)重定向实际上是说,“如果您正在寻找版本号在 1.x 到 1.y 范围内的 DLL,请查看版本 1.z”。

编辑ways round the .NET strong name integrity check ,但我建议在尝试规避它之前围绕标准强名称机制设计您的应用程序。

关于.net - 在 GAC 中更新 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547457/

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