2010-02-22 30 views
9

Tôi đã thêm một bước bổ sung sau khi xây dựng để tôi có thể tích hợp mspec với teamcity. Tuy nhiên tôi không muốn chạy điều này khi tôi đang xây dựng trong IDE vì nó kéo dài thời gian để xây dựng. Có someway tôi có thể phát hiện xem tôi đang xây dựng từ IDE và không thực hiện mục tiêu cụ thể này? Đây là những gì tôi có cho đến nay.Có thể phát hiện khi xây dựng trong IDE VS không?

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

Giải pháp dễ dàng là thêm cấu hình xây dựng khác nhưng tôi không muốn làm điều đó.

Ngoài ra sản lượng TeamCity đang được đổ vào cửa sổ đầu ra là loại gây phiền nhiễu. :)

+0

tạm thời Tôi chỉ chạy phiên bản này trong bản phát hành, nhưng vẫn muốn biết liệu có thể phát hiện xem bản dựng đang được thực hiện trong IDE – Dave

Trả lời

9

Có bạn có thể kiểm tra thuộc tính BuildingInsideVisualStudio.

Vì vậy, trong trường hợp của bạn, bạn có thể làm điều gì đó như sau:

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

Chú ý các điều kiện trên mục tiêu. FYI, nói chung tôi thường advise against putting condition on targets nhưng đây là một cách sử dụng tốt cho họ.

+0

Cảm ơn bạn rất nhiều không! – Dave

Các vấn đề liên quan