1

InfoPath.FormControlを使用して.NET4.0WPFアプリケーションでInfoPathフォームをホストしています。

<WindowsFormsHost Name="infoPathFormsHost">
    <ip:FormControl x:Name="infoPathXmlEditor"/>
</WindowsFormsHost>

すべてが正常に実行され、次を使用してフォームを正常に開くことができます。

this.infoPathXmlEditor.NewFromFormTemplate(formTemplatePath, fileStream, XmlFormOpenMode.Default);

ただし、MainSourceでCreateNavigatorを使用してフォーム内の要素をナビゲートしようとすると、問題が発生し始めます。

this.infoPathXmlEditor.XmlForm.MainDataSource.CreateNavigator().SelectSingleNode(xPathToElement);

その時点で、次の例外が発生します。

「混合モードアセンブリは、ランタイムのバージョン「v2.0.50727」に対して構築されており、追加の構成情報がないと4.0ランタイムにロードできません。」

これを克服する方法を見つけることができたのは、app.configファイルに以下を追加することです。

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

ただし、これを追加すると、NewFromFormTemplateメソッドの呼び出しで次の例外が発生します。

InfoPathは、新しい空白のフォームを作成できません。InfoPathはフォームを開くことができません。この問題を解決するには、システム管理者に連絡してください。

フォームテンプレート:file:///フォームのコードにエラーがあるため、InfoPathは選択したフォームを開くことができません。このメソッドは、.NETFrameworkによって廃止されたCASポリシーを明示的に使用します。互換性の理由でCASポリシーを有効にするには、NetFx40_LegacySecurityPolicy構成スイッチを使用してください。詳細については、http: //go.microsoft.com/fwlink/?LinkID=155570を参照してください。

誰かがこの問題の解決策を知っていますか?どんな助けでも大歓迎です。

注:InfoPathFormCode.csにはコードビハインドはありません。

4

1 に答える 1

1

追加

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<startup/>
<runtime>
<netFx40_LegacySecurityPolicy enabled="true"/>
<runtime/>

ランタイムタグを追加した後、うまくいきました!

于 2011-10-21T19:10:28.827 に答える