2012-03-16 90 views
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' 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

我加<NetFx40_LegacySecurityPolicy enabled="true" />到的app.config。它传递了第一个SecurityException,但在稍后的时间点因相同的错误而死亡。

谢谢。

回答

1

一些试验和错误之后,我发现了一种方式来获得示例应用程序的工作。

  1. 下载代码。
  2. 将每个项目的目标框架设置为.NET 4.
  3. 使用相同的密钥为每个项目签名。 (我没有 实验使用不同的密钥签名)
  4. 编译所有东西。
  5. 加入的App.config

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

你可能很幸运 - 所有三个程序集都是open source,并且生活在github上,所以你可以自己编译它们并用你选择的强名键来签名。链接到项目源代码库页面:

+0

目标框架版本的这些库是.NET 2.0。我需要将其更改为.NET 4吗?谢谢! – 2012-03-20 13:18:21

+0

我试图编译所有第三方依赖项。不幸的是其中一个库修改了它的依赖关系的来源。我无法访问修改后的源代码。我想我已经达到了死亡。 – 2012-03-20 14:07:08

+0

我创建了一个测试项目,仅编译记录消息的Common.Logging,NLog和EXE项目。 Common.Logging的目标框架是2.0,NLog的是4.我用一个密钥签署了所有项目。将添加到App.config。该程序仍然会抛出“该程序集不允许部分受信任的调用者。” – 2012-03-21 16:07:32

相关问题