• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Visual Studio项目配置TargetFrameworkVersion的影响,和App.Config文件自行修改的影响、sku的作用

武飞扬头像
可能是外星人
帮助1

 【问题】:

我有我的项目目标.net4.0。我更新到4.5,并在VS中项目属性里配置后发现:

1、项目的csproj文件中:(非手动添加)

<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

2、APP.config文件中:(非手动添加)

  1.  
    <startup>
  2.  
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  3.  
    </startup>

除了更改TargetFrameworkVersion,我很好奇这是否多余。我的理解是,如果运行时找不到supportedRuntime,它将使用用于构建exe的.net版本。所以在这个例子中,exe是用4.5构建的,它也说要用4.5。不管我有没有这个,在只有4.0的机器上运行它,它的行为会有不同吗?

【答】

MSDN文档对此没有给出任何好的解释,但我发现了Scott Hanselman的一篇博客文章,标题为“.NET版本控制和多目标-.NET 4.5是对.NET 4.0的就地升级”,其中揭示了:

如果您正在制作一个客户端应用程序,如WinForms、Console、WPF等,这都是自动的。你的应用程序。config包含您需要.NET4.5的事实,您甚至会得到安装提示。

因此,配置条目是关于如果计算机上有.NET 4.0(但不是.NET 4.5)的用户尝试运行您的.NET 4.5应用程序时会发生什么。.NET 4.0和.NET 4.5都是基于CLR的版本4构建的,因此理论上是兼容的;相同的二进制格式等等。基于.NET 4.0构建的二进制文件与基于.NET 4.5构建的二进制版本之间的唯一区别在于它们引用的库。

因此,为.NET 4.5编译的应用程序可以在只安装了.NET 4.0的计算机上运行。然而,如果您尝试使用4.0中不存在的任何API,则会出现运行时异常。

如果您有此配置文件条目,并且使用.NET 4.0的用户尝试运行您的应用程序,该应用程序将无法运行,并且会提示用户安装.NET 4.5。

如果您没有配置文件条目,那么使用.NET 4.0的用户将能够运行您的应用程序,但如果您尝试调用4.5中添加的任何方法或使用任何类型,则会出现运行时异常。这将是您作为开发人员和测试人员的一大痛苦。只有当您有特定的应用程序必须在.NET 4.0上运行的要求时,才应该这样做和如果有新的4.5特性,则必须利用这些特性(并且您必须小心异常处理和在两个版本上广泛测试)。

如果你想在.NET 4.0上运行,但不需要任何新的4.5 API,那么你的生活就简单多了:只需转到“项目属性”的“生成”选项卡,并以.NET 4.0为目标。然后编译器将确保你不调用4.0中不存在的任何API,你的应用程序将在.NET 4.0和.NET 4.5计算机上成功运行。

参见外文:.net - What happens if I remove the auto added supportedRuntime element? - Stack Overflow

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggbfkb
系列文章
更多 icon
同类精品
更多 icon
继续加载