如何至少设置supportedRuntime 3.5?

时间:2013-08-30 12:07:22

标签: .net frameworks version app-config

app.config中的supportedRuntime设置只能在3.5版上运行吗?例如,使用SKU?

目前我们遇到的问题是,如果使用.NET framework 2.0运行,我们的应用程序会因找不到方法而崩溃。这给客户带来了不好的反馈。

2 个答案:

答案 0 :(得分:2)

<supportedRuntime>仅用于确定CLR版本 - 对于框架版本3.5和2.0,它是相同的。我不知道在启动参数方面需要.NET 3.5的任何方式。

话虽如此,创建一个首先探测.NET 3.5程序集的入口点应该相对简单,并且如果找不到它们会给出友好的错误消息。当然,这将取决于您正在运行的应用程序类型,但如果它是本地GUI(例如WPF或WinForms),那么它应该不会太难。

答案 1 :(得分:2)

.NET 4.0

之前不支持“sku”属性

这不是真正的问题。你没有依赖3.5,你有一个在.NET 2.0 SP1或SP2上。客户端正在运行RTM版本的2.0。微软在服务包更新中犯了一个错误,它潜入了一些RTM版本中没有的方法重载。在不更改程序集的[AssemblyVersion]的情况下,它仍然是2.0.0.0

这非常非常顽皮,并且造成了很多痛苦。在.NET 4中解决,参考程序集现在不再是GAC中程序集的纯文本。

解决此问题的基本方法:

  • 在安装程序中包含.NET 3.5SP1引导程序。这将确保您的客户的PC使用最新的服务包进行更新
  • 只需修复您的代码,避免依赖添加的方法重载。你应该知道例外的名字。猜测一下,WaitHandle.WaitOne(int)的几率很高。在SP2中添加并广泛支持等效的WaitOne(int,bool),最后一个参数设置为 false ,因为没有人理解 exitContext 可能意味着什么
  • 不太有用但却切合实际的方法:向客户端指出,您无法支持未启用Windows Update的计算机。