次のように、いくつかの異なるアプリケーションの .config ファイルを変更しました。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
devenv.exe.config (VS 2005 - 聞かないでください :)) に対してこれを行ったとき、うまく機能しました - ほとんどの Visual Studio は .NET 2.0 を使用していましたが、.NET 4.0 フレームワークをターゲットとするアセンブリを利用することができました.
カスタム .exe に対して同じことを試みました。これはたまたま MS CAB に基づいており (わずかに変更されています)、WPF と WinForms コンテンツのハイブリッド ミックスを持っています。このアプリケーションのアプリ構成ファイルを変更するとすぐに、アプリケーションの起動中に次の例外が発生し始めました。
元に戻す操作で、対応するセット操作で適用されたものとは異なるコンテキストが検出されました。考えられる原因は、コンテキストがスレッドで設定され、元に戻されていない (元に戻されていない) ことです。System.InvalidOperationException: Undo 操作で、対応する Set 操作で適用されたものとは異なるコンテキストが検出されました。考えられる原因は、コンテキストがスレッドで設定され、元に戻されていない (元に戻されていない) ことです。
アプリケーション コードに直接何も表示されない、非常に長いスタック トレースがあります (多数の MS アセンブリのみ)。
アプリケーションの .config ファイルを次のように変更すると:
<startup useLegacyV2RuntimeActivationPolicy="true">
</startup>
つまり、supportedRuntime 要素を削除すると、アプリケーションはこの例外をスローしません。しかし、コード内で .NET 4 アセンブリを読み込もうとすると、次のように失敗した場合:
System.BadImageFormatException: ファイルまたはアセンブリ '' またはその依存関係の 1 つを読み込めませんでした。このアセンブリは、現在読み込まれているランタイムよりも新しいランタイムによってビルドされているため、読み込むことができません。
これは期待できると思います。
2 つの質問があります。
1) このアプリケーションの構成ファイルを変更して supportedRuntime 要素を含め、.NET 4 サポートを追加し、それについて何ができるかについての提案を追加すると、System.InvalidOperationException 例外が発生する理由はわかりますか?
2)答えが「理由がわからない/それについて何ができるかわからない」である場合、.NET 3.5 SP1コード(C#)は、条件付きで.NET 4ランタイムサポートを追加するためのよりきめ細かいサポートを提供できますアプリケーション全体をターゲット .NET 4 に変換せずに、または宣言的な構成ファイルのアプローチを使用せずに、特定のアセンブリに対して? ある時点で、アプリケーション全体を .NET 4 をターゲットとするように変換しますが、短期的にはこれは困難な作業であり、短期的なソリューション/ハックを期待しています。
どんなアドバイスでも構いませんのでよろしくお願いします!