Team Foundation Server中的自动构建

时间:2010-12-17 18:08:45

标签: visual-studio-2010 tfs build build-automation

我正在为我的解决方案设置自动构建。但是,我在将某些信息复制到某些文件夹时出现错误。这适用于我的解决方案中的每个项目都有的构建事件。

我想知道的是,是否有办法“关闭”项目中的各个构建事件,或者是否有一个参数可以设置某个地方来关闭这些构建事件?

我已经设置的自动构建已经完成了单个项目构建事件应该做的事情,因此它试图重复自身并导致问题。我仍然需要将构建事件与项目相关联,因为当它们在开发环境之外运行时,它们需要发生以使应用程序正常运行(构建事件与动态更新信息有关)。

长话短说,有没有办法在我的解决方案中关闭与每个项目相关联的构建而不实际删除它们?我需要它们在那里,当我在开发环境中运行自动构建时,我只需要它们是“看不见的”。

我为所有事情的冗长和含糊而道歉,有时很难解释事情而不会放弃太多。

编辑:为了清晰起见,不是编辑,因为它是附加信息,但仍然如此。我想要实现的基本目标是禁用与我的解决方案中的每个项目相关联的“后期构建”。我想保留它们,只是在我通过内部自动构建/测试运行它们时禁用它们

4 个答案:

答案 0 :(得分:13)

经过对“BuildingInsideVisualStudio”属性的大量研究以及为了使语法正确而进行了大量调整,我和我的团队找到了我们想要的东西。

我们插入了声明

if '$(BuildingInsideVisualStudio)' == 'true' <executed code>

格式在项目属性&gt;下的“构建后事件命令行”部分中构建事件选项卡。

答案 1 :(得分:8)

这样的一些后期构建脚本代码应该可以工作:

if "$(BuildingInsideVisualStudio)"=="" (
    @echo TFS build
) else (
    @echo Visual Studio build
)

将现有代码放在适当的块中,具体取决于您是希望它仅在VS版本中运行,还是仅在TFS版本中运行

答案 2 :(得分:2)

您还可以将.csproj文件更改为以下内容:

  <PropertyGroup Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">
    <PostBuildEvent>commands to execute</PostBuildEvent>
  </PropertyGroup>

不幸的是,Visual Studio不会在Build Events选项卡中显示任何信息,因此未来的维护可能会更加困难。

答案 3 :(得分:1)

您可以检查任何团队构建属性,看看它们是否已填充。如果是这样,你可以假设它是团队建设。我在构建中使用这种方法,以便只有在构建服务器上运行时才会发生构建后部署标记等。

这是link with the various team build properties

<SomeTask Condition="$(BuildDefinitionName)!=''">