我正在尝试按照此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
请帮忙!
答案 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。