2012-03-06 26 views

回答

0

如果我正確理解你,你想在Visual Studio中創建時打開一個文件,而不是從MSBuild的命令行中打開一個文件?

如果是這樣,請在Visual Studio中指定PreBuild或PostBuild。

  1. 右鍵點擊Solution Explorer中的項目並選擇屬性
  2. 選擇活動標籤
  3. 添加無論是前或後生成事件打開所需的文件
+0

沒有 - 我有與它的自定義的MSBuild目標的的csproj。當我點擊Visual Studio中的構建時,我想讓它在目標中發生一個特殊的動作...像Condition =「StartedInVS()」。當我從命令linke(即msbuild ...)運行它時,我希望這種情況失敗。那麼MSBUILD如何在一個目標中檢測到目標是什麼/什麼? – zekeyeehaw 2012-03-06 21:37:29

+0

你說得對,我很抱歉。我之前的回答是錯誤的,並且構建事件將被執行。我添加了另一個解釋如何實現您的目標的答案,並且這次我測試了它,以確保它。 – BryanJ 2012-03-07 03:26:09

2

將屬性添加到.csproj項目文件,例如:

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

然後在要運行的任務中,輸入一個評估該屬性的條件。例如,如果你想打開的notepad.exe每當構建從命令行執行和NOT視覺工作室:

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

當然,當你運行,這是依賴於設置$(FromMSBuild)屬性正確通過命令行構建,就像這樣:

MSBuild myProject.csproj /p:FromMSBuild=true 
32

報價從MSDN page

當在Visual Studio中建立,物業$(BuildingInsideVisualStudio)設置爲true。這可以用在您的項目或.targets文件中,以使構建行爲有所不同。

示例如何才能在使用你的*凸出或.targets文件:

<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> 
相關問題