将策略文件添加到GAC时出错

时间:2008-11-19 15:24:52

标签: gac policy publisher

我正在尝试按照此thread向gac添加发布者策略文件,但是当我尝试在测试服务器上添加文件时遇到问题。

我得到“无法找到程序集清单中指定的模块'policy.3.0.assemblyname.dll'”

我的政策文件如下:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="*assemblyname*"
                          publicKeyToken="7a19eec6f55e2f84"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

请帮忙!

由于


我从头开始用一个没有依赖性(除了默认值)本身的新程序集重新创建了这个问题 - 一切都在我的本地开发机器上工作正常(并且重定向也很好)但是在添加策略文件时出现同样的错误到服务器上的GAC!

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="TestAsm"
                          publicKeyToken="5f55456fdcc9b528"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

以下列方式链接

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0
pause

请帮忙!

3 个答案:

答案 0 :(得分:3)

哇 - 好的。

我应该更加注意这意味着什么

(MSDN) How to: Create a Publisher Policy

  

重要说明:发布商政策   程序集无法添加到全局   程序集缓存,除非原始   发布商政策文件位于   与程序集相同的目录。

坦率地说,这个要求是如此奇怪,以至于它没有注册。原始策略文件已编译到我尝试添加到gac的程序集中,在添加策略程序集时必须与策略程序集位于同一文件夹中。

答案 1 :(得分:1)

好的......只想查看一些基础知识......

您肯定已经为GAC安装了两个版本的依赖程序集?

您是否已验证[assembly:AssemblyVersion()]属性中的版本号是否正确。

你确实使用了[assembly: AssemblyVersion ()]和 NOT [assembly: AssemblyFileVersion (“1.0.0.1”)]。

更新:我的错误,您只需要GAC中最新版本的程序集。我只是在这里试过,它的确有效。我唯一的另一个想法是检查公钥标记是否相同,并且您没有拼错程序集名称。

此外,在生成策略文件时,请确保使用程序集链接器中的/ version开关将版本号显式设置为3.0.0.0 AND 不指定/ platform开关。 e.g。

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0

答案 2 :(得分:0)

要使用Wise将策略程序集添加到GAC,您可以执行与添加策略所针对的程序集相同的操作。因此,您将策略程序集添加到Wise中的“全局程序集缓存”中,只要您在计算机上的相同位置具有策略文件(.config),Wise就会自动将其添加到GAC。