我有一个控制台应用程序,它引用了我没有源代码的第三方库:
1)Common.Logging.NLog,2)Common.Logging,3)NLog
将安全选项切换为“这是部分信任应用程序”(部署在网络共享驱动器中)后,VS发出4条警告:
Warning 1 Reference 'Common.Logging.NLog' does not allow partially trusted callers.
Warning 2 Reference 'Common.Logging' does not allow partially trusted callers.
Warning 3 Reference 'NLog' does not allow partially trusted callers.
Warning 4 Use of app.config binding redirects requires full trust.
我尝试了C# - .NET 4.0 - That Assembly does not allow partially trusted callers中的解决方案 1)使用SN.EXE创建密钥 2)用这个密钥签署我的所有程序集。
之后,编译器抱怨第三方库没有强名称。
有人会建议解决方案吗?我没有直接控制客户端计算机,所以我更喜欢不需要客户端计算机配置的解决方案(例如,CASPOL.EXE)。
UPDATE_1
我向app.config添加了<NetFx40_LegacySecurityPolicy enabled="true" />
。它传递了第一个SecurityException,但在稍后因同一错误而死亡。
感谢。
答案 0 :(得分:1)
经过一些试验和错误后,我找到了一种让示例应用程序正常工作的方法。
添加到App.config
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true" />
</runtime>
答案 1 :(得分:0)
您可能很幸运 - 所有三个程序集都是open source并且位于github,因此您可以自行编译它们并使用您选择的强名称密钥进行签名。项目源存储库页面的链接是: