У меня есть сборка .Net, которая импортирует сборку, связанную со средой выполнения v2.0. У меня проблема в том, что когда я пытаюсь запустить несколько тестов на моей сборке, Fusion пытается загрузить неправильную версию зависимой сборки.
После просмотра манифеста сборки я могу понять, почему: неверная версия FSharp.Core
связана. В моем файле сборки я делаю FSharp.Core, Version=4.0.0.0
явным, но FSharpPowerPack
, по-видимому, ссылается на v2.0.0.0, и некоторые, похоже, "выигрывают" в этой битве ссылок.
Вот манифест:
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern FSharp.PowerPack
{
.publickeytoken = (A1 90 89 B1 C7 4D 08 09 ) // .....M..
.ver 2:0:0:0
}
.assembly extern mscorlib as mscorlib_8
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System.Core as System.Core_9
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 3:5:0:0
}
.assembly extern FSharp.Core
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....:
.ver 2:0:0:0
}
Обратите внимание, что, по-видимому, при включении FSharpPowerPack
v2.0 и v3.5 других сборок .Net (mscorlib, System, System.Core) включаются и псевдонимы. Почему это происходит? Это связано с проблемой загрузки неправильной версии FSharp.Core
?
Редактировать: Для пояснения, моя сборка генерируется компилятором C # v4.0.