【问题标题】:upgrading to new .NET framework- supportedRuntime version VS sku in app.config?在 app.config 中升级到新的 .NET framework-supportedRuntime 版本 VS sku?
【发布时间】:2017-11-03 14:58:58
【问题描述】:

我正在从 .NET 4.0 升级到 4.7.1

我关心的两件事。

  1. App.Config-<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/></startup></configuration> 这是否意味着它真的没有升级到更新的框架并且运行在 4.0.0 而不是 4.7.1?

  2. 在 svcutil 自动生成的类中?

    自动生成 // 此代码由工具生成。 // 运行时版本:4.0.30319.18444

    它生成:

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]

我是否必须删除所有自动生成的类并以某种方式使用较新的框架重新生成它,或者我可以手动将它们更改为 4.7.1?

【问题讨论】:

  • 4.7.1 是 .NET Framework 4.x 的就地升级(对于任何较低的 x 值)。这确实意味着在许多地方,它仍然声称是 4.0 版。
  • 别慌,没有错。版本编号比看上去要多得多,这里有 3 个不同的编号。任何以 .NET 框架 4.x.y 为目标的程序都使用运行时版本 v4.0(CLR 和抖动)。 x.y 代表程序集和修订。 [Serialization] 属性类型自 4.0.0.0 版以来没有改变,基本 BCL 类型都没有。强制您的用户更新到 4.7.1 目前可能不是最好的决定,Windows Update 尚未部署它。 4.6.2就好了。
  • @HansPassant 所以我的第二个问题是 WCF 自动生成的代理(?)代码是可以的,它的 System.Runtime.Serialization 是 4.0.0.0 b/c 它使用了相同的 CLR?
  • 除了 4.0.0.0 之外没有其他版本,微软没有任何理由改变它。唯一的“问题”是你没有问题。

标签: c# .net visual-studio .net-4.7


【解决方案1】:

这是否意味着它真的没有升级到更新的框架并且是 在 4.0.0 而不是 4.7.1 上运行?

不,当您设置sku=".NETFramework,Version=v4.7.1" 时,这意味着运行应用程序需要 .NET 4.7.1。运行时版本对所有 4.X 框架都是通用的。与 .NET 2.0 类似,3.0 和 3.5 的所有运行时版本均为 2.0.50727。

【讨论】:

  • 所以supportedRuntime指的是CLR,对于.NET framework 4.0到4.7.1来说都是4.0.0
【解决方案2】:

对于所有 .net 4.x 子版本,runtime version entry is 4.0 in the app.config

SKU 条目指定您针对的 .net 4.x 版本,sku=".NETFramework,Version=v4.7.1" 表示您针对 .net framework 4.7.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多