2011-11-25 58 views
7

Tengo el siguiente código en una aplicación .Net 4 Winforms que carga un ensamblado. Todos los archivos están en C :. Hay numerosos DLL, que funciona bien, pero dos errores con lo siguiente:Error de loadFromRemoteSources con Assembly.LoadFrom

Se ha intentado cargar un ensamblado desde una ubicación de red que habría causado la asamblea para ser un recinto de seguridad en las versiones anteriores de .NET Marco de referencia. Esta versión de .NET Framework no habilita la política de CAS por defecto, por lo que esta carga de puede ser peligrosa. Si esta carga no está destinada a la caja de arena del ensamblaje , habilite el modificador loadFromRemoteSources. Consulte http://go.microsoft.com/fwlink/?LinkId=155569 para obtener más información.

Esto sólo parece ser un problema en algunas PC

Aquí está el código:

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

Comprobar esta respuesta, puede resolver el problema del histórico [http://stackoverflow.com/a/33755170/1127429](http://stackoverflow.com/a/33755170/1127429) – GMG

Respuesta

20

Pues resulta que el problema se debe a que el archivo fue posiblemente descargado de Internet.

Para el montaje del botón derecho -> Propiedades -> Desbloquear

enter image description here

+0

Esto resolvió mi problema cuando recibí este error en el diseñador en Visual Studio. –

2

Así es como me las arreglé para conseguir que funcione, sin recurrir a ningún clic en el lado del cliente:

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

Tenga en cuenta que si usa el parámetro CreateDomain with Evidence, obtendrá el mensaje 'Este método usa la política CAS, que ha sido obsoleta por .NET Framework'. mensaje.

Como alternativa, puede configurar una caja de arena adecuada:

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

1

Piggybacking sobre Jon, tuve este problema, pero con una gran cantidad de asambleas en muchas carpetas diferentes. Descargué Streams de Sysinternals para desbloquear los archivos en masa. Encontré una buena discusión sobre Superusuario sobre este tema.

Streams from Sysinternals Super User discussion