2012-12-26 64 views
2

我想從我的C#exe中的網絡文件夾加載dll。 System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(xPath +「\」+ t [0] +「.dll」);回到頂端這篇文章中的信息適用於:從C#中的網絡驅動器加載程序集(dll)

我收到以下錯誤 -

RefusedSet="" 
     Url=file://<network drive>/folder/raterType.dll 
     StackTrace: 
      at raterType.raterType.raterTypeCode(String a) 
     InnerException: 

什麼大會設置做我必須做的,要充分信任的dll從我的exe文件,所以它加載它沒有任何限制嗎?

+2

你的錯誤的其餘部分在哪裏? –

+0

當我將它複製到剪貼板時,該行結束於InnerException。我會嘗試獲取剩餘部分,但是,它基本上是安全權限限制。 –

回答

4

這是由於CAS policy。你需要給予完全的信任許可。

如果在此之後它不起作用,請嘗試首先將文件加載到內存(byte Array,使用System.IO.File.ReadAllBytes()),然後使用Assembly.Load()從內存文件數據中加載程序集超載。

+0

在我的環境中,從字節數組加載程序集是唯一能解決問題的解決方案。謝謝! –

3

您需要對您嘗試從網絡位置加載的程序集給予「完全信任」。這是一個step-by-step guide

+0

肯定會投票,但一個問題 - 如果我授予程序集(dll)完全信任,將來會從任何共享驅動器加載任何exe文件嗎?我可以授予程序集完全信任,而從exe本身加載? –

+0

@amit_pandey有不同的方式來配置信任,但基本上你說任何EXE都可以從當前位置訪問該程序集。如果更改共享,則必須更改信任設置。您必須閱讀信任設置,以確保您正確地配置它以滿足您的需求。 –

+0

非常感謝您的指導Jon。 –