使用VisualStudio建置事件及xcopy快速分類輸出的檔案
from https://note.kimx.info/2014/03/visualstudioxcopy.html
前言
目前在內部建立了一組專案樣板的Nupkg,若要發佈更新時,我的步驟是先發行專專輸出到目錄,並作了以下動作:1.複製dll到nupkg的lib目錄
2.複製其他所需內容 如:js,css等內容檔到nuget的content目錄
Ps:在作第2點時會需要先將目錄內的一些非必要檔案移除
這樣的動作,作一~兩次倒還好,若常作的話除了令人煩噪以外,還會常發缺檔案或多了檔案的問題..針對此問題我改使用VisualStudio的建置事件先幫我將所需要的目錄及檔案先分類好,然後再一次複製到Nupkg上,這樣的方式省事多了。
使用方式
1.打開[專案屬性]的建置事件-->建置後事件命令列 輸入xcopy語法以下為我目前使用的語法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
)
建置會出現訊息"(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
from http://yy-programer.blogspot.com/2013/06/visual-studio.html
Visual Studio提供程式建置前、後的命令事件
相當的方便好用
但每次要查巨集指令時都要找
特此記錄一下
巨集出處
巨集 | 描述 |
---|---|
$(ConfigurationName) | 目前專案組態的名稱,例如 "Debug|Any CPU"。 |
$(OutDir) | 相對於專案目錄的輸出檔目錄路徑。這將解析為 [輸出目錄] 屬性 (Property) 的值。尾端會加上反斜線「\」。 |
$(DevEnvDir) | Visual Studio 2008 的安裝目錄 (定義為磁碟機 + 路徑),尾端加上反斜線「\」。 |
$(PlatformName) | 目前的目標平台名稱。例如 "AnyCPU"。 |
$(ProjectDir) | 專案的目錄 (定義為磁碟機 + 路徑),尾端會加上反斜線「\」。 |
$(ProjectPath) | 專案的絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 |
$(ProjectName) | 專案的主檔名。 |
$(ProjectFileName) | 專案的檔名 (定義為主檔名 + 副檔名)。 |
$(ProjectExt) | 專案檔的副檔名。在副檔名之前包括一個句號「.」。 |
$(SolutionDir) | 方案的目錄 (定義為磁碟機 + 路徑),尾端會加上反斜線「\」。 |
$(SolutionPath) | 方案的絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 |
$(SolutionName) | 方案的主檔名。 |
$(SolutionFileName) | 方案的檔名 (定義為主檔名 + 副檔名)。 |
$(SolutionExt) | 方案的副檔名。在副檔名之前包括一個句號「.」。 |
$(TargetDir) | 建置主要輸出檔的目錄 (定義為磁碟機 + 路徑)。尾端會加上反斜線「\」。 |
$(TargetPath) | 建置主要輸出檔的絕對路徑名稱 (定義為磁碟機 + 路徑 + 主檔名 + 副檔名)。 |
$(TargetName) | 建置主要輸出檔的主檔名。 |
$(TargetFileName) | 建置主要輸出檔的檔名 (定義為主檔名 + 副檔名)。 |
$(TargetExt) | 建置主要輸出檔的副檔名。在副檔名之前包括一個句號「.」。 |
而常用的xcopy的指令參數出處:
xcopy source destination /a | /m /d:date /p /s /e /v /w
參數 | 描述 |
---|---|
source | 指定要複製的檔案。 |
destination | 指定的位置和新的檔案名稱。 |
/a | 複製檔案有保存屬性設定。這個參數不會變更該屬性。 |
/m | 複製檔案的保存屬性設定,並關閉 [保存] 屬性。 |
/d:date | 指定的日期晚於或等於,就會變更複製檔案。 |
/p | 會提示您之前建立的每個目的地檔案。 |
/s | 複製資料夾及子資料夾以外的空的。 |
/e | 會複製任何子資料夾,即使它是空白。 |
/v | 確認每個新的檔案。 |
/w | 會提示您複製之前,請按任一按鍵。 |
from https://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
留言
張貼留言