F # интерактивный, ограничение API на dll-ссылки - PullRequest
6 голосов
/ 27 февраля 2012

Как вы решаете сообщение об ошибке, которое выглядит следующим образом?

`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.

Код, который его вызывает, может выглядеть так:

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

1 Ответ

8 голосов
/ 27 февраля 2012

Похоже, что FSI не будет загружаться из указанной DLL, кроме как по имени, поэтому это решило бы проблему:

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

#I означает добавить эту папку в путь загрузки

#r означает ссылку по пути dll; сосредоточив внимание на имя. Это означает, что FSI сначала будет использовать имя файла, просматривая общесистемный путь поиска, и только затем попытаться использовать строку после #r в качестве подсказки относительно каталога.

Таким образом, делая это таким образом, вы загружаете NLog из указанного каталога, а не из общесистемного каталога.

...