TAPI テレフォニー サービス プロバイダーである混合モード (.NET 2.0) DLL アセンブリ (ソース コード) があります。そのため、Windows テレフォニー サービス (svchost) によって読み込まれます。これは、.NET 2.0 または 3.5 が (プレ) インストールされている場合、Windows XP、Vista、および Windows 7 で期待どおりに機能します。
現在、.NET 4 がプリインストールされた Windows 8 をターゲットにしています。私が直面している問題は、Windows がその構成で DLL (および TSP) をロードしないことです。.NET 3.5 をインストールすると、すべて正常に動作しますが、既に存在する .NET 4 に加えて、ユーザーに .NET 3.5 のインストールを強制したくありません。
.NET 4.0 プロジェクトで .NET 2.0 混合モード アセンブリを参照するには、どのような「追加の構成」が必要ですか? しかし、私にはアプリケーションがなく、したがって app.config ファイルがないため、これは当てはまりません。
http://reedcopsey.com/2011/09/15/setting-uselegacyv2runtimeactivationpolicy-at-runtime/によるとuseLegacyV2RuntimeActivationPolicy
、混合モード アセンブリをロードする前にセットアップする興味深いアプローチのようです。しかし、アセンブリはテレフォニー サービスによって読み込まれるため、これは私の場合には機能しないと思います。
それとも、これは混合モードアセンブリ自体で可能ですか? アセンブリは、常に Windows サービスからのアンマネージ呼び出しによって呼び出されます。このような呼び出しで、最初のものを作成する前にアンマネージ コード部分にポリシーを設定することは可能gcroot
ですか、それとも既に遅すぎますか? 可能であれば、必要な COM オブジェクトを取得して呼び出す方法を教えてください。