同时编译到两个.NET框架

22

我有一个用C#编写的程序,希望它能编译成两个不同的.NET Framework版本。

因此,当我按下“编译”按钮时,它会生成例如“ComputerInfo3.exe”和“ComputerInfo4.exe”这样的文件。

我想使用.NET Framework 3.5和4的版本。我使用的是Visual Studio和C#语言。这是否可行?


7
为什么,为什么?如果你的代码能够在3.5编译通过,这意味着你没有使用任何4.0的功能。那你为什么要以4.0为目标呢?请解释一下原因。 - Rodrigo
8
这是有合法用途的。图书馆就会这样做。这对于图书馆的使用者来说会减少不必要的麻烦。我承认他所做的不是这个,但是回答这个问题对我个人很有用。 - jnm2
2
我也遇到了同样的问题,因为我正在构建的应用程序只需要.NET 2(我使用它来获得最广泛的受众),而我想要另一个版本以便能够提交到英特尔的AppUp.com平台,该平台仅允许.NET 3.5应用程序。 - Uwe Keim
1
我认为c-conditional-compilation-and-framework-targets是一个更好的答案。 - Arthur
2个回答

19

您最好的选择是创建两个不同的csproj文件,一个针对3.5,另一个针对4.0,并将它们包含在同一个解决方案中。您可以将一个项目中的所有文件添加到另一个项目中。如果您链接文件而不是普通添加,那么您在文件中进行的任何更新都将应用于两个项目。

如果您试图将这些项目放在同一位置,则很可能会遇到问题,因为Visual Studio维护临时构建文件的方式如何。因此,您需要将它们保留在不同的文件夹中。

最后,如果您构建的可执行文件针对3.5,则它可以在.NET 4上直接运行。因此,通常情况下您不需要构建两个版本的EXE。


2
非常棒的答案。非常感谢您,因为这让我免去了尝试以更复杂的方式完成任务所带来的很多烦恼。 - David Arno

4
您可以使用nAnt自动构建,然后您可以为每个框架配置多个目标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,