Сборка. Странное поведение
У меня есть "Microsoft.Web.Services2.dll" V2.0.3.0 в моем GAC двух машин.
Я запускаю эту строку в обоих из них:
Assembly.Load("Microsoft.Web.Services2, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
(обратите внимание, что версия 2.0.0.0, а не 2.0.3.0)
На одной машине это не получается (как я и ожидал). В другом это работает, и загруженный dll 2.0.3.0. На самом деле на этой машине работает каждая версия ниже 3 (и загружает 3).
Как вы можете это объяснить?
3 ответа
Ответ здесь:
Maybe you have Microsoft.Web.Services2.dll
в вашем bin
папка. Check the assembly location:
var assembly = Assembly.Load("XXX");
Console.WriteLine(assembly.Location);
Это может быть связано с загрузкой флага "Конкретная версия". Если вы проверяете свойства сборки в папке "Ссылки" в Visual Studio, она показывает свойство "Конкретная версия", которое, я думаю, указывает, следует ли ссылаться на конкретную версию сборки или нет (по умолчанию установлено значение false). По умолчанию, он будет ссылаться на любую конкретную ИЛИ более новую версию сборки, и то, что здесь происходит, я думаю.
Таким образом, в самом методе Load может быть какая-то опция, которая указывает, загружать ли ТОЛЬКО конкретную версию или использовать более свежую, если конкретная не найдена.