0

古いアプリケーションを.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をコンピューターにインストールさせます。

4

1 に答える 1

0

ClickOnceセキュリティを有効にしている場合([ソリューションのプロパティ]>[セキュリティ]>[ClickOnceセキュリティ設定を有効にする])、デバッグを試みるときにこの問題が発生することがわかりました。ただし、(ClickOnceセキュリティを有効にして)プロジェクトを公開すると、アプリケーションを開いて通常どおりに使用できます。したがって、デバッグの場合はClickOnceセキュリティを無効にし、通常のテストと展開の場合は有効にしてから、プロジェクトを公開して正しく使用します。

于 2012-08-15T18:41:13.250 に答える