代码之家  ›  专栏  ›  技术社区  ›  David

在vs-ide中构建时是否可以检测到?

  •  9
  • David  · 技术社区  · 14 年前

    我添加了一个额外的构建后步骤,以便我可以将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输出转储到输出窗口也是有点烦人。:)

    1 回复  |  直到 14 年前
        1
  •  9
  •   Sayed Ibrahim Hashimi    14 年前

    是的,你可以查一下房子 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 但这是一个很好的用法。