0

我正在尝试根据此线程将发布者策略文件添加到 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

请帮忙!

4

3 回答 3

3

哇——好的。

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

(MSDN) 如何:创建发布者策略

重要说明:除非原始发布者策略文件与程序集位于同一目录中,否则无法将发布者策略程序集添加到全局程序集缓存中。

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

于 2008-11-27T08:24:38.100 回答
1

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

您肯定已将两个版本的依赖程序集都安装到 GAC 中吗?

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

而且您确实使用了 [assembly: AssemblyVersion ()] 而不是[assembly: AssemblyFileVersion ("1.0.0.1")]。

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

此外,当您生成策略文件时,请确保使用程序集链接器中的 /version 开关将版本号显式设置为 3.0.0.0并且不要指定 /platform 开关。例如

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0
于 2008-11-19T16:10:30.673 回答
0

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

于 2009-06-17T22:18:39.933 回答