使用VisualStudio建置事件及xcopy快速分類輸出的檔案

前言

   目前在內部建立了一組專案樣板的Nupkg,若要發佈更新時,我的步驟是先發行專專輸出到目錄,並作了以下動作:
1.複製dll到nupkg的lib目錄
2.複製其他所需內容 如:js,css等內容檔到nuget的content目錄
Ps:在作第2點時會需要先將目錄內的一些非必要檔案移除
image


這樣的動作,作一~兩次倒還好,若常作的話除了令人煩噪以外,還會常發缺檔案或多了檔案的問題..針對此問題我改使用VisualStudio的建置事件先幫我將所需要的目錄及檔案先分類好,然後再一次複製到Nupkg上,這樣的方式省事多了。

使用方式

1.打開[專案屬性]的建置事件-->建置後事件命令列 輸入xcopy語法
image

以下為我目前使用的語法if $(ConfigurationName) == Release (
xcopy $(ProjectDir)Areas\*.cshtml E:\Nuget_DLL\content\Areas /S /Y /I
xcopy $(ProjectDir)Content\Site.css E:\Nuget_DLL\content\Content\ /S /Y /I
xcopy $(ProjectDir)fonts\*.* E:\Nuget_DLL\content\fonts /S /Y /I
xcopy $(ProjectDir)Scripts\sysCore.js E:\Nuget_DLL\content\Scripts\ /S /Y /I
xcopy $(ProjectDir)Views\*.cshtml E:\Nuget_DLL\content\Views /S /Y /I
xcopy $(ProjectDir)favicon.ico E:\Nuget_DLL\content\ /S /Y /I
xcopy $(ProjectDir)Global.asax E:\Nuget_DLL\content\ /S /Y /I
xcopy $(ProjectDir)bin\NTX*.dll E:\Nuget_DLL\lib\ /S /Y /I
echo f|xcopy $(ProjectDir)Web.config E:\Nuget_DLL\content\Web.config.transform /S /Y /I
)

上方的語法較特別的是最後一行的開頭echo f,此為因我需要將檔案複製成另一檔案名稱,但
建置會出現訊息"(F = 檔案,D = 目錄)?"要你選擇,而使用echo f來強制為檔案

上述刪除線內容在測試時一直會將View/web.config拿來覆蓋,所以我乾脆直接建一個.transform檔,用copy語法來執行copy $(ProjectDir)Web.config.transform E:\MPISI\Project_Deploy\SysCore_Nuget_DLL\content\Web.config.transform

而後面/S /Y /I則為參數值
/S:複製資料夾及子資料夾以外的空的。
/Y:不要提示您確認是否要覆蓋一個已經存在的檔案
/I:如果目的不存在且複製一個以上的檔案的話,就假設指定的目的一定是目錄。

詳細語法可參考http://support.microsoft.com/kb/289483/zh-tw
參考文章http://yy-programer.blogspot.tw/2013/06/visual-studio.html
http://social.technet.microsoft.com/Forums/scriptcenter/en-US/b7baef00-e0e3-41b2-8968-87352769c386/xcopy-force-file-or-directory-by-default?forum=ITCG
http://vanishing.pixnet.net/blog/post/26372267-%E7%94%A8xcopy%E4%BE%86%E5%82%99%E4%BB%BD-part.ii-%E6%8C%87%E4%BB%A4%E5%A4%A7%E9%9B%86%E5%90%88%E5%AF%A6%E6%88%B0%E7%AF%87

這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS