Visual studio 2010 在Visual Studio 2010中使用MSBuild 3.5

Visual studio 2010 在Visual Studio 2010中使用MSBuild 3.5,visual-studio-2010,msbuild,Visual Studio 2010,Msbuild,如何强制Visual Studio 2010使用MSBuild 3.5而不是新的4.0?可以从“项目属性”对话框中针对不同版本的运行时: 不确定修改生成规则以将MsBuild 3.5用于C#/VB.NET目标是否是一个好主意 (以下更改是不必要的。使用.NET 4目标文件完全没有问题。) 编辑尝试使用文本编辑器打开c#项目并修改此行: <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 为此: &

如何强制Visual Studio 2010使用MSBuild 3.5而不是新的4.0?

可以从“项目属性”对话框中针对不同版本的运行时:

不确定修改生成规则以将MsBuild 3.5用于C#/VB.NET目标是否是一个好主意

(以下更改是不必要的。使用.NET 4目标文件完全没有问题。) 编辑尝试使用文本编辑器打开c#项目并修改此行:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

为此:

<Import Project="C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CSharp.targets" />

为什么要这样?除了4.0之外,还有其他3.5版本的功能吗

如果您真正关心的是,当代码签出到未安装.NET 4的计算机时,您可以使用MSBuild 3.5来生成项目(csproj)。您需要为MSBuild 3.5创建解决方案文件,因为它不接受VS2010的sln文件

当MSBuild遇到ToolsVersion=“4.0”时,它会将其视为ToolsVersion=“3.5”,然后一切都会继续工作


我的开源项目#SNMP利用了这些技巧,因此可以在.NET 4、.NET 3.5和Mono上构建源代码。

我认为,如果没有恶意攻击,您无法更改Visual Studio中使用的MSBuild版本

工具版本 MSBuild使用的MSBuild任务、目标和工具的版本由项目文件中的ToolsVersion属性确定

  • Visual Studio 2008使用ToolsVersion=“3.5”
  • Visual Studio 2010使用ToolsVersion=“4.0”
问题:如果手动将项目文件的ToolsVersion更改为3.5,Visual Studio 2010将自动将项目文件的ToolsVersion升级为4.0

黑客 解决方案是将project ToolsVersion设置为3.6(或者,如果确实要覆盖MSBuild 4.0,则设置为4.0),然后在注册表中创建以下项:

  • 注册表配置单元:
    \HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\3.6
  • 字符串键名称:
    MSBuildToolsPath
  • 字符串键值:
    .NET Framework 3.5安装路径
    (C:\Windows\Microsoft.NET\Framework\v3.5)
在ToolsVersion未知的机器上,将使用默认ToolsVersion


有关将VS 2010用于不适用于MSBuild 4.0的项目的详细信息。

。由于MSBuild 4.0使用Framework 4.0,因此它没有帮助。我们需要以MSBuild 3.5为目标,请参见编辑,这可能会有所帮助。不确定系统引用会发生什么情况,如果在Vs2008->VS2010转换期间转换了这些组件,则可能需要将它们指向组件的v3.5。这也不会改变实际使用的可执行文件。@HeavyWave,您抱怨的是“这没有帮助,因为MSBuild 4.0使用Framework 4.0。我们需要将MSBuild 3作为目标。”这是一种误解。尽管MSBuild 4依赖于.NET 4,但如果您要求它根据早期的.NET版本生成项目,您将看到输出仅依赖于旧版本,而不是.NET 4。您甚至不需要编辑标记。Visual Studio 2010也引用.NET 4程序集,但它与生成结果无关,对吗?那么为什么不能使用MSBuild 4呢?在机器上,MSBuild 3.5用于生成VS2010 csproj,MSBuild 3.5只是将ToolsVersion=“4.0”视为ToolsVersion=“3.5”。因此,在某些情况下,MSBuild 3.5仍然可以构建VS2010项目文件(特别是当您要求VS2010根据.NET 3.5而不是4进行构建时)。。。但是必须在任何能够正确构建项目的机器上进行吗?对于团队项目来说可能不太好——我想还需要向TFS构建服务器添加hack。在从一个框架到另一个框架的迁移过程中可能很有用。。我可以试试我也有类似的问题