从网络位置加载程序集

Ser*_*her 12 .net assemblies c#-4.0

我试图通过以下方式加载程序集:

Assembly component = Assembly.LoadFrom(componentPath);
Run Code Online (Sandbox Code Playgroud)

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

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

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

你能解释我该怎么做才能避免这种安全检查吗?

谢谢

Fur*_*dar 15

我遇到了同样的问题.原因是Windows阻止了Assembly文件.我通过右键单击Assembly文件并选择属性来解决它.在Properties对话框中,单击General选项卡下的Unblock按钮,然后单击Apply,然后单击OK.

参考:http://blogs.msdn.com/b/drew/archive/2009/12/24/xunit-and-td-net-fixing-the-attempt-was-made-to-load-an-assembly-从-A-网络的位置-problem.aspx


sgo*_*les 7

阅读装配加载的最佳实践以获得一个想法.
另请阅读.NET Security上的msdn博客


Sta*_*opo 6

除了Furqan Safdar的答案外,另一种选择是在配置文件中添加以下标记:

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

希望这些链接可以帮助您:

http://msdn.microsoft.com/zh-CN/library/dd409252(VS.100).aspx