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にはコードビハインドはありません。