【发布时间】:2010-09-16 03:47:42
【问题描述】:
我在工作中创建了一个通用库,它安装在我们测试服务器上的 GAC 中。我最近更新了它,我希望我们所有的应用程序都使用这个更新。我创建了发布者策略程序集并将其与更新一起安装在 GAC 中,但是当 Web 应用加载 Leggett.Common 1.0.0.0 时,它不会重定向到 Leggett.Common 1.1.0.0。
我在网络驱动器上有公共程序集(实际上有五个,但让我们保持简单),我在它旁边创建了发布者策略 xml 文件,然后使用 al.exe 在同一个文件夹。之后,我将更新的程序集放入 GAC,然后将发布者策略程序集放入 GAC。
通用程序集是“Leggett.Common.dll”,发布者策略文件是“1.1.Leggett.Common.policy”,发布者策略程序集是“policy.1.1.Leggett.Common.dll”。
发布者策略文件的 XML 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Leggett.Common"
publicKeyToken="32cd8f1a53a4c744"
culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="1.1.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我做错了什么?
澄清
由于开发人员无权访问测试服务器,因此我正在本地开发机器上对此进行测试。
【问题讨论】:
-
您能否向我们提供发布商政策的 XML?
-
如果这是在您的本地计算机上,您可以尝试使用 fusion logger,它实际上适用于所有版本的 .NET,您只需为任何版本的 .NET 安装 .NET SDK使用。
-
...我知道..愚蠢的东西....您确定 publicKeyToken 和版本号正确吗?即新程序集的 AssemblyVersion 属性肯定是 1.1.0.0 并且公钥令牌相同(在 GAC 中)?
-
Max - 我明天开始的时间很早,现在是 01:40,希望你不介意我明天继续做这个吗?
标签: .net deployment gac