我们正在使用一个ClickOnce部署的WPF应用程序devise运行在.Net Framework v3.5。 该应用程序不适用于Windows 8或10,如果安装了较新版本的.Net Framework,则该程序无法正常工作。
我们收到错误消息:
此方法明确使用已被.NET Framework废弃的CAS策略。 为了兼容性原因启用CAS策略,请使用NetFx40_LegacySecurityPolicyconfiguration开关。 有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkID=155570 。
我无法访问源代码或编辑Web服务器上的ClickOnce文件。 我需要一个解决scheme,可以使我们公司的计算机上的应用程序工作,而无需在Web服务器或代码中进行更改。
错误信息中的链接给出了答案:
兼容性:使用CAS策略旧版选项
通过配置元素,您可以指定进程或库使用传统CAS策略。 当你启用这个元素时,策略和证据重载将像以前版本的框架一样工作。
<configuration> <runtime> <NetFx40_LegacySecurityPolicy enabled="true"/> </runtime> </configuration>
因此,要重新启用弃用的代码,请将<NetFx40_LegacySecurityPolicy enabled="true"/>
元素添加到YourApp.exe.config
。
如果您正在使用ClickOnce,则可以将该设置添加到machine.config
。 编辑到machine.config
不会被reccomended,因为它们可能具有系统范围的运行时间或安全性后果,如果有其他选项可用,则不应该尝试,并且从不进行测试。
或者,如果你想运行.Net 3.5(这是CLR的内部版本v2.0.50727
与一些额外的库)下的整个应用程序,您可以改为以同样的方式指定<supportedRuntime>
。 对于通过ClickOnce部署的应用程序,这不是一个选项。
<configuration> <startup> <supportedRuntime version="v2.0.50727"/> </startup> </configuration>