Visual Studio项目配置TargetFrameworkVersion的影响,和App.Config文件自行修改的影响、sku的作用
【问题】:
我有我的项目目标.net4.0。我更新到4.5,并在VS中项目属性里配置后发现:
1、项目的csproj文件中:(非手动添加)
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
2、APP.config文件中:(非手动添加)
-
<startup>
-
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
-
</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
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01