2010-02-22 7 views
9

J'ai ajouté une étape de construction supplémentaire afin que je puisse intégrer mspec avec teamcity. Cependant, je ne veux pas l'exécuter lorsque je construis dans l'EDI, car cela allonge le temps de construction. Y a-t-il un moyen de détecter si je construis à partir de l'EDI et de ne pas exécuter cette cible spécifique? C'est ce que j'ai jusqu'ici.Est-il possible de détecter lors de la construction dans l'IDE VS?

<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" /> 

La solution facile consiste à ajouter une autre configuration de construction, mais je préfère ne pas le faire. La sortie TeamCity en cours de vidage vers la fenêtre de sortie est également gênante. :)

+0

temporairement je ne fais que courir dans la version de la version, mais je suis toujours intéressé de savoir s'il est possible de détecter si la construction est en cours dans l'EDI – Dave

Répondre

9

Oui, vous pouvez vérifier la propriété BuildingInsideVisualStudio.

Donc, dans votre cas, vous pouvez faire quelque chose comme ce qui suit:

<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> 

Notez l'état sur la cible. FYI, généralement je généralement advise against putting condition on targets mais c'est un bon usage pour eux.

+0

Merci beaucoup! – Dave

Questions connexes