古いアプリケーションを.Net2から.Net4にアップグレードする作業を行っています。プログラムはinfopathフォームを利用しており、それらが機能するのにかなりの煩わしさを引き起こしています。最初に、FileLoadExceptionがスローされ、「混合モードアセンブリは、ランタイムのバージョン'v2.0.50727'に対してビルドされ、追加の構成情報がないと4.0ランタイムにロードできません。」というメッセージが表示されました。私はいくつかの調査を行い、app.configファイルに以下を追加しました。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
次に、Visual Studioからアプリケーションを再実行すると、フォームを開こうとするとCOMExceptionがスローされ、「このメソッドは、.NETFrameworkによって廃止されたCASポリシーを明示的に使用します。互換性の理由でCASポリシーを有効にするには、NetFx40_LegacySecurityPolicy構成スイッチを使用してください。」私もです。app.configファイルに以下を追加しました。
<runtime>
<NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>
これで、InfoPathフォームを開こうとすると、コンピューターに.Net3.5をインストールする必要があることが通知されます。このすべてからの私の質問は、このアプリケーションを実行するには、.Net 4.0であるにもかかわらず、.Net3.5フレームワークをコンピューターにインストールする必要があるのかということだと思います。コンパクトバージョンの.Net3.5は機能せず、これは3.5から4.0へのCASの変更全体であると思いますが、これを修正し、InfoPathフォームを開く/保存するプログラム的な方法があることを望んでいます。ユーザーに別のFrameworkをコンピューターにインストールさせます。