Я размещаю форму InfoPath в WPF-приложении .NET4.0, используя InfoPath.FormControl
например,
<WindowsFormsHost Name="infoPathFormsHost">
<ip:FormControl x:Name="infoPathXmlEditor"/>
</WindowsFormsHost>
Все работает нормально, и я могу успешно открывать формы, используя:
this.infoPathXmlEditor.NewFromFormTemplate(formTemplatePath, fileStream, XmlFormOpenMode.Default);
Однако я начинаю сталкиваться с проблемами, когда пытаюсь перемещаться по элементам в форме, используя 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 не может открыть форму. Чтобы устранить эту проблему, обратитесь к системному администратору.
Шаблон формы: файл: ///
InfoPath не может открыть выбранную форму из-за ошибки в коде формы.
Этот метод явно использует политику CAS, которая устарела .NET Framework. Чтобы включить политику CAS по причинам совместимости, используйте переключатель конфигурации NetFx40_LegacySecurityPolicy. Пожалуйста, смотрите http://go.microsoft.com/fwlink/?LinkID=155570 для получения дополнительной информации.
Кто-нибудь знает решение этой проблемы? любая помощь будет высоко ценится.
Примечание: в InfoPath FormCode.cs отсутствует кодовый фрагмент.