在C#中从共享网络驱动器加载DLL

我可以使用此表单加载dll –

System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(@"C:\Users\amit.pandey\Documents\Visual Studio 2010\Projects\bin\Release\EUtility.dll"); 

但是,我需要以下列方式从共享网络驱动器加载DLL –

 System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(@"\\falmumapp20\EUtility.dll"); 

我知道这是因为信任问题引起的。 我尝试了各种代码,但无法使其正常工作。 有人可以帮我提供从网络驱动器加载DLL的示例代码吗?

我希望在代码本身中执行此操作,而无需更改任何配置文件。

或者,从磁盘加载文件并在字节数组上调用Assembly.Load似乎工作(框架4):

  string Share = @"R:\Test\TestAssembly.dll"; byte[] AssmBytes = File.ReadAllBytes(Share); Assembly a = Assembly.Load(AssmBytes); //Invoking a method from the loaded assembly var obj = a.CreateInstance("TestAssembly.Class1"); obj.GetType().InvokeMember("HelloWorld", BindingFlags.InvokeMethod, null, obj, null); 

由于MS阻止LoadFrom()网络加载,这表明这样做可能不是最佳实践。 但是,这类似于在EXE中将程序集作为资源嵌入时经常使用的过程。

您需要告诉机器信任该位置。

您可以使用caspol实用程序执行此操作。

您可以使用Assembly.UnsafeLoadFrom而不是加载二进制内容。 请参阅http://msdn.microsoft.com/en-us/library/system.reflection.assembly.unsafeloadfrom%28v=vs.110%29.aspx

这在各方面都适合我。