【问题标题】:Building C# solutions from command line with Visual Studio 2010使用 Visual Studio 2010 从命令行构建 C# 解决方案
【发布时间】:2011-04-22 23:12:19
【问题描述】:

我想自动化我的 C# 解决方案的构建过程。如何从命令行构建 C# 解决方案,这样我就不必手动处理依赖关系?

【问题讨论】:

  • 是什么让您认为在 cmd 行上构建时依赖关系并不重要?这是一本更详细的手册,您必须输入依赖程序集的完整路径名。
  • 我不确定你是否理解正确。我想要的只是简单地从命令行构建一个 C# 解决方案,这样(几乎)只需要解决方案文件的路径,并且 MSBuild 似乎是要走的路。

标签: c# visual-studio build build-process build-automation


【解决方案1】:

对于您可以使用的解决方案:

devenv /build Release Solution.sln

devenv /build Debug Solution.sln

【讨论】:

  • 这需要在执行构建的机器上安装 Visual Studio。 msbuild 可用于 .net 框架。
  • +1。由于未知原因,msbuild 不适用于使用qmake -recursive -tp vc my.sln 生成的全新 .sln 文件。我必须用 VS 打开解决方案才能让 msbuild 正常工作。使用 devenv,我可以自动化 qmake 和构建过程。谢谢
  • 我在一个批处理文件中试过这个,但必须把call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat" 放在它上面。然后它起作用了。如果你有不同版本的VS,需要把路径改成VsDevCmd.bat。
  • 如果要指定输出文件夹路径怎么办?
【解决方案2】:

如果您从开始菜单打开 Visual Studio 命令提示符 - 那么您可以调用 MSBuild 并为其提供 .sln 文件或特定的 .csproj 文件以构建您需要的内容

或者,您可以创建一个自定义 MSBuild 文件来处理这些任务。

提示:确保您使用的 MSBuild 版本适用于项目的目标框架或工具版本

即如果您尝试使用 msbuild 3.5 构建在 vs2010 中创建的解决方案,那么它将无法识别项目的 4.0 工具集

【讨论】:

  • 我必须先执行vcvarsall.bat,然后才能让msbuild从任何旧的cli实例运行,一旦我这样做了,它就像一个魅力!
  • 您可以改为打开“开发人员命令提示符”:所有程序 -> Microsoft Visual Studio -> Visual Studio 工具。
【解决方案3】:

Visual Studio 项目和解决方案文件也是MSBuild 构建文件。

您可以简单地针对解决方案/项目文件运行 MSBuild,它就会构建:

<path to>msbuild.exe <path to>solution/project file

【讨论】:

    【解决方案4】:

    msbuild YourSolution.sln

    【讨论】:

    • 它如何知道是进行 Debug 还是 Release 构建?
    • "msbuild /?"用于命令行参数,包括调试/发布
    【解决方案5】:

    就我个人而言,我是 Rake 的忠实粉丝(是的 - 当你说你的 c# 解决方案时我听到了你的声音)

    查看:http://www.lostechies.com/blogs/derickbailey/archive/2009/09/23/albacore-a-suite-of-rake-build-tasks-for-net-solutions.aspx

    玩得开心 - 它让我的生活变得更好!

    【讨论】:

      【解决方案6】:

      您可以直接使用 c# (csc.exe) 编译器:

      Command-line building with csc.exe

      【讨论】:

      • 我认为 csc.exe 仅适用于 .cs 文件,但不适用于 .sln 文件
      最近更新 更多