2017年11月7日 星期二

C# 加載網路硬碟的Dll失敗

我有一個網路硬碟,磁區符號是Z槽。

在Z槽下面,放了一個assembly,名為test.dll。然後,我在VS2010中建立了一個.NET 4.0的工程,程序中有下面一段代碼:

執行代碼,拋出FileLoadException異常:Could not load file or assembly 'file:///Y:\bb\nvo_cas.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)。

【辦法一】

根據提示,找到了MSDN的一篇文章。文章給出的解決辦法是:在App.config中加入下面的xml片段:

      
      ......  
        
          
          
        
      ......  
      


【辦法二】

Assembly類有一個靜態函數UnsafeLoadFrom,這個函數在加載一個assembly的時候,不會進行一些安全檢查。

string dll = @"Z:\test.dll";  
Assembly a = Assembly.UnsafeLoadFrom(dll);  


【辦法三】

Assembly的load方法有很多的重載,可以使用其中的一個參數為byte[]的load函數。代碼如下:

string dll = @"Z:\test.dll"; ;  
byte[] assemblyBuffer = File.ReadAllBytes(dll);  
Assembly a = Assembly.Load(assemblyBuffer);  


轉載自:【解决问题】加载网络映射盘中的assembly失败