Dot-Net
使用 Assembly.LoadFrom 的 loadFromRemoteSources 錯誤
我在載入程序集的 .Net 4 Winforms 應用程序中有以下程式碼。所有文件都在 C: 上。有許多 DLL 可以正常工作,但有以下兩個錯誤:
嘗試從網路位置載入程序集,這會導致程序集在以前版本的 .NET Framework 中被沙盒化。此版本的 .NET Framework 預設情況下不啟用 CAS 策略,因此這種載入可能很危險。如果此載入不打算對程序集進行沙箱處理,請啟用 loadFromRemoteSources 開關。有關詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkId=155569 。
這似乎只是某些 PC 上的問題
這是程式碼:
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
原來問題是因為該文件可能是從網際網路上下載的。
修復右鍵點擊->屬性->取消阻止
這就是我設法讓它工作的方法,而不需要在客戶端點擊任何東西:
var appDomain = AppDomain.CreateDomain(assemblyName); var assembly = appDomain.Load(File.ReadAllBytes(assemblyName));請記住,如果您使用 Evidence 參數創建域,您將獲得“此方法使用 CAS 策略,該策略已被 .NET Framework 廢棄。” 資訊。
或者,您可以設置適當的沙箱:
http://msdn.microsoft.com/en-us/library/bb763046.aspx http://blogs.msdn.com/b/shawnfa/archive/2005/08/08/449050.aspx
