2011-11-25 41 views
7

我有下面的代碼加載程序集的.Net 4 Winforms應用程序。所有文件都在C:上。有許多DLL的這工作得很好,但兩條錯誤有以下:loadFromRemoteSources error Assembly.LoadFrom

試圖從中 會導致組件的 的.NET以前的版本被沙盒的網絡位置加載程序集框架。此版本的 .NET Framework在默認情況下不啓用CAS策略,因此此 加載可能很危險。如果此負載不打算對沙箱 裝配,請啓用loadFromRemoteSources開關。有關更多信息,請參閱 http://go.microsoft.com/fwlink/?LinkId=155569

這隻似乎是一個問題,在某些電腦

下面是代碼:

strDLLs = Directory.GetFileSystemEntries(strPath, "*.dll") 
For intIndex = 0 To strDLLs.Length - 1 
    Try 
     objDLL = [Assembly].LoadFrom(strDLLs(intIndex)) 
     ExamineAssembly(objDLL, strInterface, Plugins) 

    Catch e As Exception 
     ' MsgBox("Error whilst loading Library: " & strDLLs(intIndex) & ". Reported Error was:" & vbCrLf & e.ToString) 
    End Try 
Next 
+0

檢查這個答案,可以解決您的問題優雅[http://stackoverflow.com/a/33755170/1127429](http://stackoverflow.com/a/33755170/1127429) – GMG

回答

20

那麼原來的問題是因爲該文件可能是從互聯網上下載。

要解決右鍵 - >屬性 - >阻止

enter image description here

+0

這解決了我的問題,當我在Visual Studio中的設計器中出現此錯誤時。 –

2

這是我設法得到它的工作,而不訴諸任何點擊在客戶端:

var appDomain = AppDomain.CreateDomain(assemblyName); 
var assembly = appDomain.Load(File.ReadAllBytes(assemblyName)); 

請記住,如果您使用Evidence參數創建了DoDomain,則您將獲得'此方法使用CAS策略,該策略已被.NET Framework廢棄。'信息。

或者,你可以設置一個適當的沙箱:

http://msdn.microsoft.com/en-us/library/bb763046.aspx http://blogs.msdn.com/b/shawnfa/archive/2005/08/08/449050.aspx

1

捎帶喬恩,我有這個問題,但有很多的組件在許多不同的文件夾。我從Sysinternals下載Streams以全面解除文件阻塞。我在Super User上發現了關於這個話題的很好的討論。

Streams from Sysinternals Super User discussion

相關問題