Можно ли перечислять все установленные версии сборки в GAC с помощью C#? Например, у меня есть сборка с именем «My.Assembly». Сборка может поставляться в различных версиях («1.0.0.0», «2.3.4.5», «0.1.2.4», ...) и может быть скомпилирована для разных платформ (x86, x64, Any CPU).Перечислить все установленные версии сборки (в GAC)
Теперь мне нужно определить, какая из версий/платформ установлена.
Я знаю, что я мог перечислять каталоги в GAC, но это кажется неправильным. Должен быть лучший способ сделать это.
Background У меня есть приложение запуска, в котором пользователь выбирает DLL. Пусковая установка извлекает некоторую информацию из DLL (без ее загрузки), а затем запускает правильное управляемое приложение C#, которое обрабатывает DLL. DLL может быть скомпилирована для Win32 или x64 put предоставляет всегда один и тот же (независимый от платформы) интерфейс. Я использую функцию LoadLibrary для загрузки DLL в приложение C#. Единственная проблема заключается в том, что этот процесс должен соответствовать формату (x86 или x64). Приложение C# может и должно быть скомпилировано для x86, x64 и Any CPU.
Вы делаете это с помощью Fusion api, CreateAssemblyEnum() и IAssemblyEnum + IAssemblyName. Это не отображается в .NET Framework, но оно * содержит * код для него. ILSpy или Reflector будут удобны. –
@ HansPassant Fusions, похоже, именно то, что я искал. Кажется, трудно использовать. Было бы хорошо, если бы была управляемая/встроенная поддержка такого рода вещей. Большое спасибо! – Korexio