Снова привет,
В ответ на мой предыдущий вопрос я пытаюсь максимально совместить написанное на C # расширение Windows Explorer. В частности, мне интересно убедиться, что он работает в среде, в которой установлен .NET 4, а .NET 3.5 и ниже не установлены. Казалось бы, проблемы нет, но, видимо, не все так просто ...
Есть две проблемы. Во-первых, не предназначенные для .NET-4 сборки с разметкой не будут загружаться с CLR 4, если у них нет файла .config
, в котором указано <supportedRuntime version="v4.0" />
. Даже попытка использовать ngen
на них не удастся без этого .config
файла. Но моя DLL идет в GAC. Как мне получить туда файл .config
? Другие спрашивали то же самое и пришли к выводу: «Ну, я просто сделаю статический класс настроек вместо этого». Очевидно, я не могу этого сделать ...
Вторая проблема: когда я регистрирую свою DLL с помощью regasm.exe
, а затем открываю реестр, чтобы увидеть, что он написал, я вижу RuntimeVersion = v2.0.50727
под его записью CLSID. Это также предотвращает загрузку DLL. Только после того, как я вручную изменил значение RuntimeVersion
на v4.0.30319
, DLL загружается.
Так какого черта я должен заставить моего установщика делать здесь? Для первого я понятия не имею. Во-вторых, я полагаю, мне нужно, чтобы установщик вручную установил в системном реестре RuntimeVersion на установленную версию .NET? Это кажется слишком странным, чтобы быть правдой ...