在客户端selectClickOnce应用程序的目标框架

我们正在使用一个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>