我添加了一个额外的构建步骤,以便我可以将mspec与teamcity集成。但是,当我在IDE中构建时,我不想运行它,因为它会延长构建时间。有没有我可以检测我是否从IDE构建并且不执行此特定目标?这是我到目前为止所做的。
<Target Name="RunSpecs">
<PropertyGroup>
<AdditionalSettings>--teamcity</AdditionalSettings>
<MSpecCommand>..\Lib\mspec\mspec.exe $(AdditionalSettings) "$(TargetDir)$(AssemblyName).dll"</MSpecCommand>
</PropertyGroup>
<Message Importance="high" Text="Running Specs with this command: $(MSpecCommand)" />
<Exec Command="$(MSpecCommand)" IgnoreExitCode="true" />
</Target>
<Target Name="AfterBuild" DependsOnTargets="RunSpecs" />
简单的解决方案是添加另一个构建配置,但我不想这样做。
将TeamCity输出转储到输出窗口也很烦人。 :)
答案 0 :(得分:9)
是的,您可以查看属性BuildingInsideVisualStudio
。
因此,在您的情况下,您可以执行以下操作:
<Target Name="RunSpecs" Condition=" '$(BuildingInsideVisualStudio)'!='true' ">
<PropertyGroup>
<AdditionalSettings>--teamcity</AdditionalSettings>
<MSpecCommand>..\Lib\mspec\mspec.exe $(AdditionalSettings) "$(TargetDir)$(AssemblyName).dll"</MSpecCommand>
</PropertyGroup>
<Message Importance="high" Text="Running Specs with this command: $(MSpecCommand)" />
<Exec Command="$(MSpecCommand)" IgnoreExitCode="true" />
</Target>
注意目标上的条件。仅供参考,我通常advise against putting condition on targets,但这对他们来说是一个很好的用法。