【问题标题】:Opening InfoPath forms in .Net 4.0在 .Net 4.0 中打开 InfoPath 表单
【发布时间】:2012-08-05 22:17:39
【问题描述】:

我正在将一个较旧的应用程序从 .Net 2 升级到 .Net 4。该程序使用 infopath 表单,但它们在运行时会引起相当多的烦恼。首先,它引发了 FileLoadException,并显示消息“混合模式程序集是针对运行时的版本‘v2.0.50727’构建的,如果没有额外的配置信息,则无法在 4.0 运行时中加载。”我做了一些研究并将以下内容添加到我的 app.config 文件中:

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

然后我从 Visual Studio 中重新运行该应用程序,当它试图打开一个表单时,它现在抛出一个 COMException,并且“此方法显式使用 CAS 策略,该策略已被 .NET Framework 废弃. 出于兼容性原因,为了启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置开关。”所以我愿意。我在 app.config 文件中添加了以下内容:

<runtime>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
</runtime>

现在,当它尝试打开 InfoPath 表单时,它告诉我需要在我的计算机上安装 .Net 3.5。我想我的问题是,我真的必须将 .Net 3.5 框架安装到计算机上才能运行此应用程序,即使它在 .Net 4.0 中? .Net 3.5 的紧凑版本不起作用,我假设这是从 3.5 到 4.0 的所有 CAS 更改,但我希望有一种编程方式来解决这个问题并打开/保存 InfoPath 表单而不必让用户在他们的计算机上安装另一个框架。

【问题讨论】:

    标签: .net .net-4.0 .net-3.5 app-config infopath


    【解决方案1】:

    事实证明,如果您启用了 ClickOnce 安全性(解决方案属性>安全性>启用 ClickOnce 安全性设置),这将在尝试调试时导致此问题。但是,如果您发布项目(启用 ClickOnce 安全性),您可以打开应用程序并正常使用它。因此,为了调试,禁用 ClickOnce 安全性,对于正常的测试和部署,启用它,然后发布项目以供正确使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2011-04-27
      相关资源
      最近更新 更多