【问题标题】:How to launch correct version of Msbuild如何启动正确版本的 Msbuild
【发布时间】:2011-02-12 03:35:31
【问题描述】:

当我输入时...

Msbuild<Enter>

...在命令提示符下,我得到...

Microsoft (R) Build Engine Version 2.0.50727.4927
[Microsoft .NET Framework, Version 2.0.50727.4927]
Copyright (C) Microsoft Corporation 2005. All rights reserved.

这一切都很好,除了当我对 Visual Studio 2010 .sln 文件运行它时,错误消息表明:

MyProject.sln(2): Solution file error MSB5014: File format version is not recognized.  MSBuild can only read solution files between versions 7.0 and 9.0, inclusive.
0 Warning(s)
1 Error(s)

似乎正在调用的 MSBuild 版本无法理解我的解决方案文件。

我想我会检查我的路径并查看从哪里获取 MSBuild。但是,似乎我的路径中没有任何部分指向要找到 MSBuild 的位置。

命令行如何找到它正在使用的 MSBuild 副本,如何更改此版本以便使用最新版本?

【问题讨论】:

    标签: visual-studio-2010 msbuild


    【解决方案1】:

    更改您的environment variables

    查找/设置您的 MSBuild path 变量为 C:\Windows\Microsoft.NET\Framework\v4.0.30319

    显然上述路径将取决于您的安装位置,但如果不准确,它将接近。

    【讨论】:

    • 所以你的意思是把C:\Windows\Microsoft.NET\Framework\v4.0.30319添加到系统的PATH-变量中?
    【解决方案2】:

    它必须位于 PATH 环境中的某个位置。使用 'where msbuild' 来确定它从哪里加载 msbuild。

    使用 Visual Studio 命令提示符 (2010) 快捷方式初始化 VS 2010 和 MSBuild 4.0 的路径和其他环境变量。

    【讨论】:

    • 正如预测的那样......我的路径中有 C:\Windows\Microsoft.NET\Framework\v2.0.50727\,但实际上对它视而不见。谢谢.. Where 命令是我以前从未见过的......很棒的电话
    • 别忘了,安装较新的 .NET 框架时,旧的 MSBuild 版本也会更新。例如,.NET Framework 4.5.1 还将 .NET Framework 4.0 MSBuild 版本更新为 4.0.30319.18408。
    【解决方案3】:

    我发现这个问题是因为我的PATH 变量不包含对MSBuild.exe 的引用。如果其他人遇到此问题,我的解决方案是从命令提示符显式注册 Visual Studio 工具的环境变量:

    "%VS100COMNTOOLS%"\\vsvars32.bat // VS2010 environment variables
    "%VS110COMNTOOLS%"\\vsvars32.bat // VS2012 environment variables
    "%VS120COMNTOOLS%"\\vsvars32.bat // VS2013 environment variables
    

    MSBuild.exe 现已在PATH 注册

    where msbuild
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
    C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe
    

    【讨论】:

    • 非常感谢,这些脚本非常适合为 MSbuild 设置正确的系统路径!正是我正在寻找的。​​span>
    • 这是我让它工作的唯一方法。 vcvarsall.bat 首先将旧的东西添加到 PATH 中。
    • 如果您想模拟 Visual Studio 构建,这是正确的方法,因为现在 .NET msbuild 和 Visual Studio msbuild 是分开的。 blogs.msdn.com/b/visualstudio/archive/2013/07/24/…
    【解决方案4】:

    对于构建 C# 6 项目,这在批处理文件中对我有用

    if exist "%ProgramFiles(x86)%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles(x86)%\MSBuild\14.0\bin    
    
    if exist "%ProgramFiles%\MSBuild\14.0\bin" set MSBUILDLOCATION=%ProgramFiles%\MSBuild\14.0\bin
    
    "%MSBUILDLOCATION%\msbuild.exe" "path\to\my\project.csproj"
    

    如果您想支持一系列版本,您可以轻松更改版本号 (14.0) 或添加具有更多版本号的行(例如 12.0 和 4.0)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多