我有一個Visual Studio 2015解決方案可以構建10個項目。在每個項目中都有一個預先構建事件和後期構建事件來調用ant來解析和發佈代碼。這些事件應該在每個項目構建之前和之後觸發,因此將事件移動到解決方案是行不通的。Visual Studio 2015 - 僅在從GUI構建時運行發佈事件
每個項目也應該能夠使用ant從命令行構建。當它從命令行構建時,觸發事件,但如果它們不是,則會更好。
有誰知道是否有VS/MSBuild確定它是從GUI內還是從命令行觸發的方法?
我有一個Visual Studio 2015解決方案可以構建10個項目。在每個項目中都有一個預先構建事件和後期構建事件來調用ant來解析和發佈代碼。這些事件應該在每個項目構建之前和之後觸發,因此將事件移動到解決方案是行不通的。Visual Studio 2015 - 僅在從GUI構建時運行發佈事件
每個項目也應該能夠使用ant從命令行構建。當它從命令行構建時,觸發事件,但如果它們不是,則會更好。
有誰知道是否有VS/MSBuild確定它是從GUI內還是從命令行觸發的方法?
我不知道,你可以在PostBuildEvent做到這一點,但你可以使用AfterBuild目標,並添加這樣的條件:
<Target Name="AfterBuild">
<Exec Command="SOME_COMMAND" Condition=" '$(BuildingInsideVisualStudio)' == 'true' " />
</Target>
你需要手工在編輯的項目文件要做到這一點,因爲項目屬性不會讓你控制這個。
如果您使用的是Visual Studio 2017,則需要將條件語句作爲屬性添加到PostBuildEvent中。
<PostBuildEvent Condition="'$(BuildingInsideVisualStudio)' == 'true'">
這將防止重建依賴關係時運行後構建事件。