在单个NSIS设置中通过两个不同的.NET版本编译的C#

时间:2014-07-06 19:55:38

标签: c# .net windows-8 windows-7 nsis

我想在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

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

我找到了#34;没有人"将此解决方案用于他们的项目。 这有什么问题? 我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

没有人 1 这样做(在同一个安装程序中打包.NET 2和.NET 4版本)的原因是,通过小配置调整,应用程序的.NET 2版本可以也可以在以后的运行时工作。您可以参考这些问题以获取有关执行此操作的更多信息:

确保在.NET 4上进行测试的方式与单独构建时相同,因为有许多小但非平凡的行为更改。


1 至少,不适用于应用程序。使用开发人员插件和库,它可能有意义,虽然这与Visual Studio版本有关,而不是运行时,因为.NET 2 DLL可以很好地加载到.NET 4应用程序中而无需更改配置。

答案 1 :(得分:0)

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

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