在VS2010中使用InfoPath FormControl的问题

时间:2011-06-29 06:47:51

标签: visual-studio-2010 .net-4.0 infopath-2007

我使用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中没有代码隐藏。

1 个答案:

答案 0 :(得分:1)

添加

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

添加运行时标记后,它对我有用!