2011-06-29 49 views
1

我正在使用InfoPath.FormControl (例如,InfoPath.FormControl)在.NET4.0 WPF應用程序中託管InfoPath表單。在VS2010中使用InfoPath FormControl的問題

<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中沒有代碼隱藏。

回答

1

添加

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

它爲我添加標籤運行後!