改めまして、
前回の質問に続き、C# で記述した Windows エクスプローラー拡張機能の互換性を最大限に高めようとしています。特に、.NET 4 がインストールされ、.NET 3.5 以下がインストールされていない環境で動作することを確認することに関心があります。問題はないと思うかもしれませんが、どうやらそれほど単純ではないようです...
2 つの問題があります。まず、非 .NET-4 ターゲット アセンブリは、指定されたファイルがない限り、CLR 4 で読み込まれません。それらで使用しようとしても、このファイルがないと失敗します。しかし、私の DLL は GAC に入ります。そこにファイルを取得するにはどうすればよいですか?他の人も同じことを尋ね、「まあ、代わりに静的な設定クラスを作成するだけです」という結論に達しました。明らかに私にはそれができません....config
<supportedRuntime version="v4.0" />
ngen
.config
.config
2 番目の問題: DLL を に登録regasm.exe
し、レジストリを開いて書き込み内容を確認するとRuntimeVersion = v2.0.50727
、CLSID エントリの下に表示されます。これにより、DLL が読み込まれなくなります。RuntimeVersion
値を手動で変更した後でのみv4.0.30319
、DLL がロードされます。
では、ここでインストーラーに何をさせなければならないのでしょうか? 最初のものについては、私にはわかりません。2 つ目は、レジストリの RuntimeVersion を、インストールされている .NET バージョンに手動で設定するインストーラーが必要だと思いますか? それはあまりにも奇妙に思えます...