在一个NSIS设置中,通过两个不同的.net版本编译的c#

本文关键字:两个 编译 版本 net NSIS 一个 设置 | 更新日期: 2023-09-27 18:11:52

我想在windows 7,8,8.1上安装我的c#项目(WinForm . net v2),而不需要安装。net。

据我所知,Windows 7默认有。net v2, Windows 8,8.1默认有。net v4。

所以我想复制我的c#项目,并让他们与。net v2和v4编译。之后,我将使用一个脚本与它们一起进行NSIS设置,该脚本可以告诉我目标系统上安装的是哪个版本的。net。然后安装特定的编译项目,而不需要安装任何。net

这个想法理论上是可以的,但问题是:

我发现"没有人"在他们的项目中使用这个解决方案。有什么问题吗?我错过什么了吗?

在一个NSIS设置中,通过两个不同的.net版本编译的c#

没有人1这样做(将。net 2和。net 4版本打包在同一个安装程序中)的原因是,通过一个小的配置调整,应用程序的。net 2版本也可以在以后的运行时运行。你可以参考这些问题来获得更多的信息:

  • 允许使用。net 2.0构建的c#应用程序在。net 4.0/4.5上运行
  • 如何强制。net 3.5应用程序在。net 4.5运行时运行?

只要确保在。net 4上做测试,就像你在它是一个单独的构建时那样,因为有许多小但不重要的行为变化。


1至少在应用程序中不是这样。对于开发人员插件和库,这可能是有意义的,尽管这更多地与Visual Studio版本有关,而不是运行时,因为。net 2 dll可以愉快地加载到。net 4应用程序中,而不需要更改配置。

最好为每个windows版本构建单独的安装程序,并将二进制文件编译到操作系统已经预装的框架中。

在同一个安装程序中使用两组二进制文件不仅会使事情变得更复杂(创建额外的代码等),而且还会使安装程序更大,这可能就是为什么没有人这样做的原因。