从网络位置加载程序集

时间:2011-03-16 16:18:06

标签: .net c#-4.0 assemblies

我正在尝试通过以下方式加载程序集:

Assembly component = Assembly.LoadFrom(componentPath);

其中componentPath是网络位置的完整路径,并收到以下错误:

尝试从网络位置加载程序集,这会导致程序集在以前版本的.NET Framework中被沙箱化。
此版本的.NET Framework默认情况下不启用CAS策略,因此此负载可能很危险。

如果此加载不是用于沙盒装配,请启用loadFromRemoteSources开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=155569

请您解释一下我应该怎么做以避免这种安全检查?

谢谢

3 个答案:

答案 0 :(得分:14)

我遇到了同样的问题。原因是Windows阻止了Assembly文件。我通过右键单击Assembly文件并选择属性来解决它。在“属性”对话框中,单击“常规”选项卡下的取消阻止按钮,然后单击应用,然后单击确定

参考:http://blogs.msdn.com/b/drew/archive/2009/12/24/xunit-and-td-net-fixing-the-attempt-was-made-to-load-an-assembly-from-a-network-location-problem.aspx

答案 1 :(得分:7)

阅读Best Practices for Assembly Loading以获得一个想法 另请阅读有关.NET安全性的msdn博客

答案 2 :(得分:6)

除了Furqan Safdar's answer之外,另一个选择是在配置文件中添加此标记:

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

希望这些链接有所帮助:

http://msdn.microsoft.com/en-us/library/dd409252(VS.100).aspx