F# 交互式,对 DLL 引用的 API 限制

6
如何解决以下类似的错误信息?
`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

看起来FSI只通过名称从给定的DLL中加载,因此这会解决问题:

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

#I 表示将该文件夹添加到 load-path 中。

#r 表示按 dll-path 引用;重点在于名称。这意味着 FSI 首先使用文件名,在系统范围内搜索路径,然后才尝试使用 #r 后面的字符串作为目录相对提示。

因此,通过这种方式,您可以使 NLog 从指定的目录加载,而不是从系统范围内加载。


2
我在这里添加答案,因为我在谷歌上找不到它,重新加载交互式也没有帮助,我不得不猜测我的答案(它起作用了)。所以,谷歌,这是一些素材。 - Henrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接