使用MsBuild 4.0编译的程序集是否与仅具有.NET 3.5的计算机兼容?

Jad*_*ias 2 .net c# msbuild msbuild-4.0 c#-4.0

在目标框架为3.5的项目中,以下行使用MsBuild 4.0进行编译:

 aEnumerable.Select(aMethod);
Run Code Online (Sandbox Code Playgroud)

但MsBuild 3.5要求我写:

 aEnumerable.Select(item => aMethod(item));
Run Code Online (Sandbox Code Playgroud)

这两个二进制文件是否会运行没有.NET Framework 4.0但是使用.NET 3.5的计算机?

PS:虽然我展示了一个使用"方法过载推理"的例子,但其他"4.0"特征(例如"命名参数")也是如此.

这个问题的另一个标题可能是:C#4.0/Visual Studio 2010的哪些功能与.NET 3.5兼容?

Tay*_*ird 9

你混淆了Msbuild和.NET框架.

Msbuild只是构建.NET项目的工具.构建.NET 4项目需要4.0版,但它也可以执行.NET 1.1,2.0,3.0,3.5,3.5 SP1. 就像使用Word 2010打开Word 2003文件一样.2010年将同时开放,但如果你给它一个2010年的文件,2003年将会崩溃

您的代码示例显示了在4.0版中添加到框架的不同内容.您无法在未安装.NET 4.0框架的计算机上执行.NET 4代码.无论是什么构建它,运行时将无法理解CLR,它将无法运行

至于msBuild本身: MsBuild 4.0是一个新版本,主要更新为支持.NET 4,但也有自己的功能.如果您需要这些详细信息,请参阅msbuild4的发行说明.

也就是说,只要正确配置了targetFramework,MsBuild 4就能完全生成.NET 3.5输出.(在将所有项目升级到.NET 4框架之前很久,我们将所有构建都移动到了MsBuild 4.0)