У меня есть несколько версий .NET Framework 4.0 Assembly (.dll), написанные в C# (сам). Собрание не подписаны. Их версии устанавливаются в AssemblyInfo.cs через [Assembly: Assemblyversion ("x.x.x.x")] . [Assembly: AssemblyFileVersion ("x.x.x.x")] Tag не существует в My AssemblyInfo.cs ! Эти сборки используются в регулярном приложении .NET Framework, они не специализированные модули PowerShell, и не имеют манифестных файлов.
Я использую эту сборку в некоторых сценариях PowerShell для создания объектов и методов вызова из нее. Когда я импортирую, скажем, 1.1.1.100 версия PowerShell через импорт-модуль "D: \ path \ to_v1.1 \ myassembly.dll" , он работает просто хорошо. Когда я вызову get-module Я вижу эту импортированную сборку в списке:
Код: Выделить всё
ModuleType Version Name
---------- ------- ----
Binary 1.1.1.100 MyAssembly
< /code>
Теперь все начинает становиться интересными. Я импортирую другую версию импортного модуля Ассамблеи "D: \ ore \ path \ to_v1.2 \ myassembly.dll" Q1. Почему не отображаются ошибки? Я ожидаю получить ошибку: я пытаюсь загрузить сборку с тем же именем, но другой версией. Я думал, что вы не сможете загрузить две разные версии одной и той же сборки в одном контексте. Как обрабатываются эти ситуации, какие контексты загрузки используются? Может быть, вторая версия вообще не загружена?
Код: Выделить всё
ModuleType Version Name
---------- ------- ----
Binary 1.1.1.100 MyAssembly
Binary 1.1.1.100 MyAssembly
< /code>
Не имеет значения, какую версию я импортирую в первую очередь. Во втором импортном модуле Q3. Эти зависимости автоматически разрешаются и неявно «импортируются» в текущий сеанс (я могу использовать из них типы без проблем). Каждая версия основной Myassembly.dll зависит от разных версий этих вторичных сборок. Когда я импортирую еще одну версию Myassembly , я тоже не получаю ошибки в отношении конфликтующих версий. Еще раз, я могу использовать только типы из самых ранних импортируемых вторичных собраний. Я читал о «зависимости ада», и это должно быть невозможно - так как это возможно? Результаты одинаковы: версии и их зависимости импортируются без проблем, но доступна только самая ранняя импортированная версия. Я хочу понять , почему я могу загрузить несколько версий сборки за один сеанс без ошибок, как PowerShell обрабатывает эти ситуации в целом и почему на нем изображены два модуля с одинаковыми версиями, почему я не получаю зависимость, а не просто, что я не просто заставляю » я хочу понять, что происходит , а не просто". Здесь?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/689 ... ssembly-in
Мобильная версия