F# Interactive в Visual Studio 2015 может игнорировать путь включения DLL
У меня есть список инструкций загрузки DLL, который выглядит следующим образом:
#I __SOURCE_DIRECTORY__
#r @"packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll"
#r @"packages\Akka\lib\net45\Akka.dll" ...
Обратите внимание, что список ссылается на Newtonsoft.Json.dll (версия 7.0.1). Но когда я выполняю в FSI код, который использует библиотеки ссылок, Visual Studio загружает Newtonsoft.Json из другого места, как показано в его журнале:
Сеанс привязки к 'C:\Projects\Samples\fsharpreactivepatterns\packages\Akka\lib\net45\Akka.dll'... Сеанс привязки к 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll"...
Файл Newtonsoft.Json.dll даже не указывает на одну из папок Visual Studio 2015, он ссылается на библиотеку DLL из Visual Studio 2013, которая также установлена на моем компьютере.
Вот обходной путь, который я нашел до сих пор:
#I __SOURCE_DIRECTORY__
#r @"packages\Newtonsoft.Json\lib\net45\Newtonsoft.Json.dll"
let c = Newtonsoft.Json.Converters.DiscriminatedUnionConverter
#r @"packages\Akka\lib\net45\Akka.dll"
Теперь FSI загружает и использует правильную версию Newtonsoft.Json.
Есть ли лучший способ убедиться, что FSI использует пути DLL, указанные в директиве #r?
1 ответ
Я думаю, что если вы #I в папку, где живет JSON.Net, он может найти его оттуда. Но я согласен, я видел такое поведение время от времени, оно не интуитивно понятно.