如何在 F# 交互中加载本机 DLL?

How do I load a native DLL in F# interactive?

尝试使用 Microsoft.TeamFoundationServer.ExtendedClient nuget 包时,出现以下错误:

System.DllNotFoundException: Unable to load DLL 'Microsoft.WITDataStore32.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

发生这种情况是因为包中包含的 DLL 之一是本机 DLL,无法使用正常方式在 F# 交互式中加载 DLL (#r "dllname.dll")。

如何加载或帮助 F# interactive 查找本机 DLL?

所有必要的是确保 FSI 进程在包含本机 DLL 的目录中查找 DLL。你不需要直接引用它。

完成此操作的一种方法是将其添加到系统路径:

Environment.SetEnvironmentVariable("Path", Environment.GetEnvironmentVariable("Path") + ";" + __SOURCE_DIRECTORY__ + @"\..\packages\Microsoft.TeamFoundationServer.ExtendedClient.15.112.1\lib\native\x86\")

一些其他选项的解释如下:

http://christoph.ruegg.name/blog/loading-native-dlls-in-fsharp-interactive.html