我使用 InfoPath.FormControl 在 .NET4.0 WPF 应用程序中托管 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 无法打开所选表单。此方法显式使用已被 .NET Framework 废弃的 CAS 策略。为了出于兼容性原因启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=155570。
有谁知道这个问题的解决方案?任何帮助将非常感激。
注意:InfoPath FormCode.cs 中没有代码隐藏。