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

.net 4.0 .NET 4.0第三方库导致;该程序集不允许部分受信任的调用者“;,.net-4.0,.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'

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

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.
我试了一下这个解决办法 1) 使用SN.EXE创建密钥 2) 使用此密钥对我的所有程序集进行签名

之后,编译器抱怨第三方库没有强名称

有人能提出解决方案吗?我不能直接控制客户机,所以我更喜欢不需要客户机配置的解决方案(例如CASPOL.EXE)

更新1

我在app.config中添加了
。它通过了第一个SecurityException,但后来由于相同的错误而死亡

谢谢。

您可能很幸运——这三个程序集都是有效的,因此您可以自己编译它们,并使用您选择的强名称键进行签名。指向项目源存储库页面的链接包括:


经过一些尝试和错误,我找到了让示例应用程序工作的方法

  • 下载代码
  • 将每个项目的目标框架设置为.NET4
  • 使用相同的密钥为每个项目签名。(我没有 尝试使用不同的密钥对其进行签名)
  • 编译所有的东西
  • 添加到App.config

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

  • 这些库的目标框架版本是.NET2.0。我需要把它改成.NET4吗?谢谢!我试图编译所有第三方依赖项。不幸的是,其中一个库修改了其依赖项的源。我找不到修改过的源代码。我想我已经到了死胡同。我创建了一个只编译Common.Logging、NLog和一个记录消息的EXE项目的测试项目。Common.Logging的目标框架是2.0,NLog的目标框架是4。我用一把钥匙签署了所有项目。已添加到App.config。程序仍然抛出“该程序集不允许部分受信任的调用者”