是否有可能检测到何时在VS IDE中构建?

Dav*_*ave 9 msbuild visual-studio

我添加了一个额外的构建步骤,以便我可以将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" />
Run Code Online (Sandbox Code Playgroud)

简单的解决方案是添加另一个构建配置,但我不想这样做.

将TeamCity输出转储到输出窗口也有点烦人.:)

Say*_*imi 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>
Run Code Online (Sandbox Code Playgroud)

注意目标上的条件.仅供参考,我通常建议不要将条件放在目标上,但这对他们来说是一个很好的用法.