c# - 使用 MsBuild 4.0 编译的程序集是否与只有 .NET 3.5 的计算机兼容?

标签 c# .net msbuild c#-4.0 msbuild-4.0

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

 aEnumerable.Select(aMethod);

但是 MsBuild 3.5 要求我写:

 aEnumerable.Select(item => aMethod(item));

这两个二进制文件是否可以在没有 .NET Framework 4.0 而有 .NET 3.5 的机器上运行?

PS:虽然我展示了一个使用“方法重载推理”的示例,但其他“4.0”功能(例如“命名参数”)也会发生同样的情况。

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

最佳答案

您混淆了 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)

关于c# - 使用 MsBuild 4.0 编译的程序集是否与只有 .NET 3.5 的计算机兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935896/

相关文章:

c# - 以编程方式在客户端计算机上创建 SQL Server Compact 数据库

c# - 使用 C# 和正则表达式解析源代码并查找带参数的函数调用

c# - 如何使用 HttpWebRequest.AllowAutoRedirect 处理身份验证?

c# - 如何在 c#.net3.5 中设置焦点并在按钮单击事件上启动已经运行的应用程序?

Windows systemprofile 目录根据用户显示不同

C# Xml 到 Linq 删除一个项目

.net - Node JS setInterval。 TypeError : Cannot read property 'apply' of undefined

.net - 在 win32 API 和 .NET 框架之间进行选择

.net - nuget 的程序集被 GAC 的程序集覆盖

msbuild - 使用 Team City 环境变量覆盖项目属性