2012-03-06 18 views

Trả lời

0

Nếu tôi hiểu chính xác bạn, bạn muốn mở tệp khi xây dựng trong studio trực quan nhưng không phải từ dòng lệnh với MSBuild?

Nếu đúng như vậy, hãy chỉ định PreBuild hoặc PostBuild trong Visual Studio.

  1. Nhấp chuột phải vào dự án trong solution explorer và chọn Thuộc tính
  2. Chọn Sự kiện tab
  3. Thêm hoặc là một Pre hoặc Đăng Build sự kiện để mở các tập tin mong muốn
+0

không - Tôi có một csproj với mục tiêu tùy chỉnh msbuild trong đó.. Khi tôi bấm xây dựng trong Visual Studio, tôi muốn nó kết quả trong một hành động đặc biệt diễn ra trong mục tiêu ... một cái gì đó giống như điều kiện = "StartedInVS()". Khi tôi chạy nó từ lệnh linke (tức là msbuild ...) Tôi muốn điều kiện đó thất bại. Vậy làm thế nào MSBUILD có thể phát hiện trong một mục tiêu như thế nào/cái gì được gọi là mục tiêu? – zekeyeehaw

+0

Bạn đúng, lời xin lỗi của tôi. Câu trả lời trước của tôi là sai, và các sự kiện xây dựng sẽ được thực hiện bất kể. Tôi đã thêm một câu trả lời khác giải thích cách hoàn thành mục tiêu của bạn và tôi đã thử nghiệm nó lần này để chắc chắn. – BryanJ

2

Thêm thuộc tính vào tệp dự án .csproj, ví dụ:

<PropertyGroup> 
    <FromMSBuild>false</FromMSBuild> 
</PropertyGroup> 

Sau đó, trong tác vụ bạn muốn chạy, hãy đặt điều kiện đánh giá thuộc tính đó. Ví dụ, nếu bạn muốn mở notepad.exe bất cứ khi nào xây dựng được thực hiện từ dòng lệnh và KHÔNG visual studio:

<Target Name="BeforeBuild"> 
<Exec Command="C:\Windows\Notepad.exe" Condition="$(FromMSBuild)" /> 
    </Target> 

Tất nhiên, điều này phụ thuộc vào thiết lập $ (FromMSBuild) sở hữu một cách chính xác khi bạn chạy xây dựng thông qua dòng lệnh, như vậy:

MSBuild myProject.csproj /p:FromMSBuild=true 
32

Trích từ MSDN page:

Khi xây dựng bên trong Visual Studio, các $ tài sản (BuildingInsideVisualStudio) được thiết lập là true. Điều này có thể được sử dụng trong tệp dự án của bạn hoặc .targets để làm cho bản dựng hoạt động khác nhau.

Ví dụ như thế nào nó có thể được sử dụng trong của bạn * Proj hoặc .targets file:

<PropertyGroup> 
    <MyProperty Condition="'$(BuildingInsideVisualStudio)' == 'true'">This build is done by VS</MyProperty> 
    <MyProperty Condition="'$(BuildingInsideVisualStudio)' != 'true'">This build is done from command line of by TFS</MyProperty> 
</PropertyGroup> 
Các vấn đề liên quan