Можно ли обнаружить при сборке в VS IDE? - PullRequest
9 голосов
/ 22 февраля 2010

Я добавил дополнительный шаг после сборки, чтобы я мог интегрировать 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 Ответ

9 голосов
/ 24 февраля 2010

Да, вы можете проверить свойство 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>

Обратите внимание на состояние цели. К вашему сведению, как правило, я обычно советую не ставить условие на цели , но это хорошее применение для них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...