2016-02-01 82 views
5

每次我做構建我想對於這個預建的事件發生:的Visual Studio預生成事件檢查,看是否有目錄(文件)存在,刪除它,如果它確實

del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

如果目錄在那裏,這工作正常。但是如果目錄不存在,那麼它會導致構建失敗。我試圖做這樣的事情來檢查,如果該目錄在那裏:

if Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\') 
del $(ProjectDir)\obj\Debug\Package\PackageTmp\web.config 

但我相信我的語法是錯誤的,因爲我得到的255的退出代碼會是什麼來得到這個工作的正確方法?

謝謝!

+0

它不是一個帶括號的函數,它的名字是存在的。使用雙引號。如果存在「路徑」del「路徑」 –

+0

你是否正在討論實際的xml文件本身?或者VS中屬性頁面的編輯器窗口?我已經嘗試了十幾種方法,並沒有運氣讓這個工作。 – ashlar64

+0

另一種方式:忽略退出代碼,例如http://stackoverflow.com/questions/7912726/how-to-modify-return-code-in-visual-studio-build-events/7913356#7913356 – stijn

回答

4

顯然,這個工作:

if EXIST "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" (
del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" 
) 

上面這段代碼是我試着這樣做的第一途徑之一。但它一直在失敗。經過多次嘗試後,我重新啓動了Visual Studio 2015並再次輸入該代碼,然後開始工作。

2

我會用一個目標來完成這個。具體來說,我會建議覆蓋BeforeBuild目標。有幾種不同的方式來做到這一點,但最簡單的是修改您的文件恕我直言。

在項目文件的底部(可以通過在Visual Studio中右鍵單擊項目進行編輯 - >卸載項目,然後再次右鍵單擊並選擇編輯該項目),您應該看到一行<Import ...行。添加一個目標該行這是這樣的後:

<Target Name="BeforeBuild" Condition="Exists('$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config')"> 
    <Delete Files="$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" /> 
</Target> 

有關更多信息,請參見How to: Extend the Visual Studio Build Process上覆蓋之前和之後的目標。

相關問題