2012-02-27 9 views
6

¿Cómo resuelve el mensaje de error que se ve así?F # interactivo, restricción de API en la referencia dll

`Binding session to 'C:\Program Files (x86)\NLog\.NET Framework 4.0\NLog.dll'... 

error FS0193: API restriction: The assembly 
'file:///C:\Program Files (x86)\NLog\.NET Framework 4.0\NLog.dll' has 
already loaded from a different location. It cannot be loaded from a 
new location within the same appdomain. 

Código que lo activa, podría tener este aspecto:

#r @"..\packages\NLog.2.0.0.2000\lib\net20\NLog.dll" 
NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging() 

Respuesta

8

Parece que el FSI no se carga desde el archivo DLL que no sea dada por su nombre, por lo que este podría solucionar el problema:

#I @"..\packages\NLog.2.0.0.2000\lib\net20" 
#r @"NLog.dll" 
NLog.Config.SimpleConfigurator.ConfigureForConsoleLogging() 

#I significa añadir esa carpeta a la carga de la ruta

#r significa hacer referencia por dll-path; centrándose en el nombre. Esto significa que FSI usará primero el nombre del archivo, buscando en la ruta de búsqueda de todo el sistema y solo luego intentará usar la cadena después de #r como una pista relativa al directorio.

Por lo tanto, al hacerlo de esta manera, realiza la carga NLog desde su directorio especificado en lugar de hacerlo desde un sistema completo.

+2

Agregué esta respuesta aquí, porque no pude encontrarla mientras busqué en Google, volver a cargar el interactivo no me ayudó y tuve que adivinar mi camino hacia la respuesta (que funcionó). Entonces, google, aquí hay algo de forraje. – Henrik

Cuestiones relacionadas