我使用InfoPath.FormControl在.NET4.0 WPF应用程序中托管InfoPath表单 e.g。
<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无法打开所选表单。 此方法显式使用CAS策略,该策略已被.NET Framework废弃。为了兼容性原因启用CAS策略,请使用NetFx40_LegacySecurityPolicy配置开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=155570。
有谁知道这个问题的解决方案?任何帮助将不胜感激。
注意:InfoPath FormCode.cs中没有代码隐藏。
答案 0 :(得分:1)
添加
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<startup/>
<runtime>
<netFx40_LegacySecurityPolicy enabled="true"/>
<runtime/>
添加运行时标记后,它对我有用!