gpt4 book ai didi

.net - 除了编译之外,MSBuild 脚本中应该包含哪些内容?

转载 作者:行者123 更新时间:2023-12-01 09:40:12 26 4
gpt4 key购买 nike

我目前正在尝试设置 CruiseControl.net,所以我想知道如何拆分我的任务。

一般来说,我想运行单元测试 (xUnit.net)、帮助文件生成 (SandcaSTLe) 和 FxCop。

现在我只是想知道我是否应该在 msbuild 配置(“文档”)中指定一个新目标并使用它来运行 SandCaSTLe,或者它是否属于单独的脚本?另外,msbuild 是用来构建一些东西的,所以我猜 ncover、xunit 和 FxCop 不应该是它的一部分,还是应该它们?

msbuild 的预期范围是什么?

最佳答案

将几乎所有内容都放入 MSBuild 脚本中,以便您和其他开发人员可以通过命令行在本地运行相同的步骤。否则,当构建出现问题时,您必须在 CC 服务器上对其进行调试。不是很好的调试体验。此外,您希望在提交之前在本地运行构建以确保其正常工作。

我不会放入 MSBuild 脚本的几件事是:

  • SVN 更新,因为 CC 无论如何都必须这样做,而且您通常不想在本地构建时更新。 (好吧,我确实经常输入 svn up && msbuild,但它太短了,我不需要将其放入脚本中。)
  • 创建和发布构建报告;同样,这是 CC 的域,在本地没有用处

至于构建您的 MSBuild 文件,您将需要一个“主”构建脚本,您可以使用它来构建所有内容只是一些目标,例如

  • MSBuild/t:Build 以增量方式构建代码
  • MSBuild/t:Rebuild 进行干净的重建
  • MSBuild/t:UnitTest 只运行单元测试
  • MSBuild 表示最常见的选择,例如,相当于 t:Build;UnitTest
  • MSBuild/t:All 干净地构建代码、文档和设置、运行所有测试并打包结果

您还可以为流行的变体添加“快捷方式”目标。

拥有一个主构建文件并不意味着所有内容都在这个文件中定义;您可以包含其他 msbuild 文件,和/或递归调用 msbuild 来组织您的构建。例如:

  • 主.proj文件应该比较简单;主要是,它应该定义特定于项目的东西,例如要构建的解决方案列表和特定于项目的覆盖
  • 让主文件包含一个 .targets 文件,其中包含目标和默认属性;努力保持这个项目的中立性和可重用性。
  • 如果 .targets 文件变得太大,请将其拆分为单独的文件,例如一种用于代码,一种用于帮助和文档,一种用于设置和打包。让你的主 .targets 文件包含那些子文件,这样你的 .proj 文件仍然只需要包含一个文件
  • 同样,如果需要,您可以拆分主 .proj 文件,例如按子系统。

关于.net - 除了编译之外,MSBuild 脚本中应该包含哪些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com