Проблемы с использованием InfoPath FormControl в VS2010 - PullRequest
1 голос
/ 29 июня 2011

Я размещаю форму 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 отсутствует кодовый фрагмент.

1 Ответ

1 голос
/ 21 октября 2011

Добавить

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

У меня сработало после добавления тега времени выполнения!

...