【发布时间】: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