2017-09-01 5 views
2

Lorsque vous essayez de travailler avec le paquet Microsoft.TeamFoundationServer.ExtendedClient de NuGet, je reçois l'erreur suivante:Comment charger une DLL native dans F # interactive?

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

Cela se produit parce que l'un des DLL inclus dans le package est une DLL native et ne peuvent pas être référencés en utilisant la façon normale de charger une DLL en F # interactive (#r "dllname.dll").

Comment puis-je charger ou aider F # interactive à trouver la DLL native?

Répondre

3

Tout ce qui est nécessaire est de s'assurer que le processus FSI recherche des DLL dans le répertoire qui contient la DLL native. Vous n'avez pas besoin de le référencer directement.

Une façon d'y arriver est d'ajouter au chemin du système:

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

Quelques autres options sont expliquées à:

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