異なるGACの場所を使用する2つのCLRバージョン(.NET Frameworkのバージョン2とバージョン4)に関する質問があります。私はv2 GAC(C:\ Windows \ Assembly)からアセンブリ "X"を参照するクライアントアプリケーションを構築しました。私は現在、アセンブリ "X"を.NETフレームワーク(C:\ Windows \ Microsoft.NET \ assembly)のv4で実行するように更新していますが、クライアントアプリケーションを再コンパイルしたくありません。 v4 GACをインストールする前に、アセンブリ "X"がv2 GACから削除されていることに注意してください。アセンブリバージョンを別のCLR/GACにリダイレクトする
CLRのバージョン2にあったアセンブリをCLRのバージョン4にリダイレクトするパブリッシャポリシーファイルを作成することはできますか?もしそうなら、これはどのように達成されますか?
私はMSDNを検索しましたが、.NET Frameworkのバージョンを指定できるassemblyBinding要素にapplyToフィールドがあることを理解していますが、これはバインド全体を網羅しているようです。私が望む何
のようなものです:
<bindingRedirect oldVersion="1.0.0.0" .Net 2 newVersion="2.0.0.0" .Net 4/>
私はCLRのバージョン2.0のアプリケーションは、現在GACにCLR v4.0のアセンブリを見ることができないことをここhttp://msdn.microsoft.com/en-us/magazine/dd727509.aspxを読みました。ただし、使用して更新CLRを使用するアプリを強制することができます
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
だからこれの混合物を加えた発行者ポリシーで十分で、または別の方法があるのでしょうか?
ありがとうございます。我々は、GACでアセンブリをインターフェイスするように構築された現場のクライアントを持っているので、新しいバージョンのアセンブリを(追加しないで置き換えることによって)リリースするとき、新しいバージョンに対して強制的に再コンパイルする必要はありませんリダイレクトにパブリッシャポリシーアセンブリを使用する理由クライアントアプリケーションの再コンパイルを避けるのは良いことです。しかし、これは、クライアントがapp.configを持つことを保証する必要があることを意味し、説明したように新しいアセンブリをリリースするときにv4ランタイムをサポートするようにこれらを更新することを忘れないでください。出版社の方針がこれに対処できればいいですね! – Jeb
最新のCLRですべてのアプリケーションを強制的に実行できるレジストリ設定があります。この回答を参照してください:http://stackoverflow.com/questions/2094694/launch-powershell-under-net-4/2096906#2096906それが実現可能かどうかは分かりませんが、各クライアント用にApp.configを用意する必要はありません(ただし、GPOなどを使ってレジストリ設定を自動化することができれば)! – mthierba