2012-02-27 127 views
6

如何解決看起來像這樣的錯誤消息?觸發它F#交互式,對dll引用的API限制

`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() 

回答

8

看來,FSI將不會從比其他名字給定的DLL加載,因此這將整理出來的問題:

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

#I意味着該文件夾添加到負載路徑

#r表示通過dll路徑引用;專注於名稱。這意味着FSI將首先使用文件名,查看系統範圍的搜索路徑,然後嘗試使用#r之後的字符串作爲目錄相關提示。

因此,通過這種方式,您可以從指定目錄而不是系統範圍內加載NLog。

+2

我在這裏添加了這個答案,因爲我找不到它,而谷歌搜索,重新加載交互沒有幫助,我不得不猜猜我的答案(工作)的方式。所以,谷歌,這是一些飼料。 – Henrik 2012-02-27 12:47:56