如何使用Visual Studio进入自动构建?

Pet*_*gan 9 msbuild visual-studio

我在小型.net商店工作,目前我们使用visual studio IDE构建我们的所有解决方案.我们希望能够完全控制我们用于构建,测试,部署的MSBuild脚本 - 利用MSBuild社区任务等.

我想我的问题是:Visual Studio开发经验会有什么不同?

如果我们正在创建自己的MSBuild .proj文件,这是否意味着我们不再拥有.csproj文件?项目如何在VS中看待?

我错过了一些非常明显的东西吗

更新 感谢大家花时间回应.我知道一些构建工具:CruiseControl,TeamCity等,以及vs项目(.csproj等)只是MSBuild文件.我想要处理的是那些决定编写自己的脚本和自己的.proj文件的人.他们是否使用VS .csproj文件作为"容器"来保存IDE中的代码文件?他们如何触发自己的开发者构建?他们只是从命令行启动MSBuild吗?在工具栏上有一个按钮,有效地做同样的事情?

总而言之 - 是的,您确实可以使用其他工具通过调用.sln文件或.csproj文件来驱动您的构建,但还有另一种方法 - 它是如何工作的?

jam*_*vey 6

我们使用msbuild进行自动构建,您只需将msbuild指向解决方案文件而不进行任何更改.

另外,为了澄清,我们还使用了一个自动构建服务器(带有.Net插件的Hudson),它使用msbuild来自动化该过程.


Pet*_*gan 1

感谢大家的回复,但经过一些研究,我发现了一些以不同方式做到这一点的想法:

  • 将构建过程扩展到 .sln 和 .csproj 文件的限制之外
  • 但仍然使用 Visual Studio
  • 并尽可能保持在 MSBuild 世界中
  • 根据需要添加 TeamCity 和 Hudson 等构建服务器的功能
  • 但不依赖这些服务器来获取构建脚本应提供的功能。

所以我发现的是:Scott Hanselman 的这篇关于代码组织的旧博客文章。在这里,他使用 Nant 而不是 MSBuild,但基本概念是通过 .bat 批处理文件执行您想要的任何 nant/msbuild 项目。

“在这个源目录中,我们有诸如 build.bat 和 buildpatch.bat 之类的东西。我们的目标是人们可以从源代码管理中获取这些东西并输入 BUILD 并放在有用的地方。能够可靠且简单地构建是非常令人欣慰的一个完整的系统。”

从这里我可以看到,他(显然)仍然使用 .sln 和 .csproj 将他的文件保存在一起以用于 VS - 并且可以根据需要通过 VS 进行构建 - 但实际上是通过 Nant .build 文件进行构建,并通过 .bat 执行。

另一篇文章(同样来自 Scott Hanselman)展示了如何从 Visual Studio 中执行外部工具(例如 MSBuild 或 .bat 文件)。所以我创建了一个 build.bat 文件,如下所示:

@echo off
echo Building %1 solution from build.bat
echo Directory: %~p1
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe %~f1 %2
Run Code Online (Sandbox Code Playgroud)

(我从这里得到了时髦的 ~p 和 ~f 参数修饰符;%~f1 将 MySolution.sln 扩展为 sln 的完全限定路径);-)

然后,我设置了 Visual Studio“外部工具”对话框,以便: - 命令为“build.bat” - 参数为“$(SolutionFileName) /v:m” - 初始目录为“&(SolutionDir)”

然后我在工具栏上添加了一个按钮来执行它。我可以进一步映射 F5 键来运行它,而不是标准的 Visual Studio 构建。

不管怎样,这些只是一些想法(诚然来自别人的大脑!),但它让我对构建以及如何完成它们有了更深入的了解。有一些限制(例如错误不会出现在错误列表窗口中),但我确信如果需要的话可以克服这个问题。

我将尝试一下,看看单独使用 MSBuild 可以实现什么目标,然后尝试连接到 Hudson,看看效果如何!:-)

顺便说一句,如果有人此时仍在阅读,并对我在自己的答案中提出的内容是好/坏/对/错/过时/过时/有缺陷/其他有意见,请随意提出同意你的意见。

不错,皮特。