.NET 4.0第三方库导致“该程序集不允许部分信任的调用者”

时间:2012-03-16 19:18:23

标签: .net-4.0

我有一个控制台应用程序,它引用了我没有源代码的第三方库:

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,但在稍后因同一错误而死亡。

感谢。

2 个答案:

答案 0 :(得分:1)

经过一些试验和错误后,我找到了一种让示例应用程序正常工作的方法。

  1. 下载代码。
  2. 将每个项目的目标框架设置为.NET 4.
  3. 使用相同的密钥对每个项目进行签名。 (我没有 用不同的密钥对它们进行实验签名)
  4. 编译所有内容。
  5. 添加到App.config

       <runtime>             
         <NetFx40_LegacySecurityPolicy enabled="true" />
       </runtime> 
    

答案 1 :(得分:0)

您可能很幸运 - 所有三个程序集都是open source并且位于github,因此您可以自行编译它们并使用您选择的强名称密钥进行签名。项目源存储库页面的链接是: