关于.NET 的编译版本的问题

2019-08-07 15:23:20 +08:00
 Buffer2Disk

关于 .csproj 文件里面的 TargetFrameworkVersion 这个标签,

如果我填的是 v4.7.2

那么编译出来的可执行文件,能成功安装到那些 v4.5 版本的 .net 的机器上吗?

如果不能的话,是不是我自己这边要安装 v4.5 版本的 framework ,再去编译可执行文件出来才行呢? 我试了下,微软好像不让降级安装 .net framework

1539 次点击
所在节点    程序员
8 条回复
ian19znj
2019-08-07 15:55:06 +08:00
1. 如果 Target framework version 填 4.7.2, 那么无法运行在仅安装了.net 4.5 的客户机上。
说仅安装是因为.net 不同版本可以共存,客户机上可能同时存在.net 4.5 和 4.7.2, 那么是可以运行的,但如果只有 4.5,无法运行)

2. 你说的不完全正确,如果要部署在 4.5 的电脑上,确实是要将 target framework version 设置成 4.5 或者更低。但编译的时候,并不是看你的电脑上.net framework 是什么版本,而是看你电脑上是否安装了对应版本的.net framework SDK, 也就是说,你需要在你的电脑上安装.net framework 4.5 sdk.
abdiweli
2019-08-07 16:11:31 +08:00
如果你不要 4.7 上新增 API,那完全可以把,net 版本调低一点。
Buffer2Disk
2019-08-07 16:27:14 +08:00
@ian19znj 如果我的电脑上装了 4.5.1 的 SDK, 客户的机器上装的是 4.0 的 framework,这种是能运行起来的嘛?

因为我看微软官方好像压根没提供 4.0 的开发包
https://dotnet.microsoft.com/download/visual-studio-sdks
hihipp
2019-08-07 17:03:16 +08:00
@Buffer2Disk

先回答问题:

1. 一二楼已经说得比较清楚了,默认情况下,项目中的 "TargetFrameworkVersion" 版本,客户机必须也有此版本的 runtime 才可以运行。
2. 这个页面没有开发包,是因为微软不再支持,可以通过搜索引擎搜索下载。

再对 1 补充:

从 .net framework 4.0 到最新的 4.8,运行时版本没有变化过,都是 v4.0 运行时。

具体请看,app.config 文件,supportedRuntime 元素下 version 和 sku 属性。

version 属性值:v4.0

sku 属性值:项目的 TargetFrameworkVersion

v4.0 运行时机制,如果含有 sku 属性值,则会检查是否含有此版本运行时,如果没有则不能运行,反之亦然。

删除 sku 属性,只要客户机有 v4.0 运行时,就有可能可以运行。但运行情况会不符预期,主要是框架版本之间的差异。
Buffer2Disk
2019-08-07 18:24:59 +08:00
@hihipp 非常感谢回复,解释的很清楚
Buffer2Disk
2019-08-07 18:39:01 +08:00
@hihipp 有一个疑问,如果 TargetFrameworkVersion 写的是 4.5.1

app.config 里面内容如下,无 sku,包含 4.0 和 v2.0 的 runtime
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>

那么我可以理解为,这个软件可以在一台只装了 V2.0 runtime 的机器上运行,不会提示要求安装.net 4.0 对吧?
Nasei
2019-08-07 18:55:18 +08:00
如果不是 winforms 或者 wpf 的话还是可以升级到新的项目文件格式,TargetFrameworks
whevether
2019-08-08 09:24:16 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/589838

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX