0

是否有可能在Visual Studio中具有累積的自定義生成步驟?Visual Studio中的累積自定義生成步驟

我想要做的是有一個

if not exist "$(OutDir)" mkdir "$(OutDir)" 

爲所有配置的自定義步驟(當前和未來可能的)

但是,對於一個特定的配置(比如部署)我想額外地這樣做

xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y 

這可能嗎?我曾嘗試在部署添加屬性表與XCOPY命令,但所有配置「自定義生成步驟」屬性(與MKDIR命令)似乎完全掩蓋XCOPY一!

+0

OutDir是否已經由構建自動創建? – stijn

+0

@stijn是的,但我使用它作爲例子 –

回答

0

看來你需要有一個%(Command)添加在每個命令列表年底使命令可繼承

答案在這裏找到: https://stackoverflow.com/a/22749337/113718

無需添加額外的「命令」感覺很的hackish,如果有另一種更好的解決方案,請分享。

+0

這裏沒有太多的hackish,它只是如何與msbuild中的變量一起工作:當再次聲明它們時,它們會被覆蓋。像其他語言一樣,如果你說'a = 1',那麼'a = 2',後面的說明會覆蓋前者。你爲什麼期望它是'12'或'3'或其他?所以如果你想追加,除了引用原始值並將新值添加到它之外別無它法。 – stijn

+0

@stijn你對變量是如何工作是正確的,但人們會期望*命令*和命令行不能被解釋爲單純的變量,而是被解釋爲累積*列表*。自動的。 –

+1

好的,但如果是這種情況,那麼你就無法真正覆蓋它們了。除非他們爲此增加了另一種「魔術」方式。所以這可能就是爲什麼開發者希望保持簡單並且有一種可以實現任何事情的方法。 – stijn

1

替代解決方案:你可以很容易地通過使用例如

<Target Name="MyTarget" BeforeTargets="BscMake"> 
    <Exec Command="xcopy ..."/> 
</Target>` 

這將BSCMAKE前右跑,這是當使用默認選項自定義生成步驟也運行具有此功能。或者您也可以使用AfterTargets="CustomBuildStep"使其在您的CustomBuildStep等後運行。請注意,此方法還可以輕鬆地添加更多步驟而不會干擾其他步驟。

相關問題