[筆記] 9 個步驟帶著 TortoiseSVN Log 無痛修改 VS2015 專案名稱

  • 624
  • 0
  • 2018-08-07

本文筆記使用 Visual Studio 2015 作為專案開發環境 & TortoiseSVN 作為版控軟體的情境下,修改專案名稱且完整轉移更名前專案之 SVN Log 的詳細具體步驟,步驟中有數項是與保留 SVN Log 相關,如無使用 SVN 則可略過。

在前公司工作時,曾聽同事說過這麼一句話:「事不過三,三則重構。」重構的目的,是為了不讓精力再重複花在討厭的事情上。同樣的道理套用到日常的開發,我將之稱為「事不過三,三則筆記。」有些事情就是簡單但瑣碎,不好好紀錄一下,每次遇到的時候都要再被這簡單的事情困擾一次 ─ 例如使用 Visual Studio 開發時更改專案名稱的問題,這個需求基本上不該經常遇到,但人總有手誤且我們都知道開發過程中唯一不變的就是變,有時為了讓專案整體看起來更順眼,還是會有這樣的需求出現。VS 專案在改名稱這件事上確實有點麻煩,因為要顧及的修改點比想像的還多,其中一個地方沒顧到就會讓專案發生令人沮喪的建置失敗。相信許多人跟小弟一樣,經常有想改名稱的念頭,但怕改不乾淨又打消念頭。其實只要成功過一次,有了信心,以後就再也不怕這件事了,所以以下就筆記小弟使用 VS2015 開發 Web MVC 專案時專案更名的具體步驟,由於筆者還有使用 TortoiseSVN 做個人專案的版控,所以也會順道考量 SVN Log 轉移的問題,如果沒有使用 SVN 的話部分步驟便可略過。

在即將進行專案更名之前,強烈建議先把當前可正常運作的專案進行一次備份,用版控軟體或是用最單純的資料夾備份也無所謂,總之要讓自己有個無所畏懼的後盾就是了。

步驟一:內部 namespace 更名

用 VS 打開方案,隨便找一處有欲改名專案 namespace 的地方(找有 using 或找該專案當中的 .cs 檔皆可) 以內建的重新命名功能 (F2 或右鍵 > 重新命名(Rename)) 將 namespace 改為新名稱,關閉 VS。

 

步驟二:外部路徑更名

SVN 使用者:SVN update 後透過 SVN rename (重要!這樣才會保留更名前的 commit log,直接在 Windows 資料夾更名的話,會遺失這些 log) 修改資料夾名稱 & .csproj 檔名,此時更名後的資料夾 & .csproj 檔會是 SVN add 的狀態,原名稱的資料夾 & .csproj 檔會消失並且呈現 SVN delete 狀態。(此步驟是為確保步驟三所使用的實體路徑存在,但步驟二、三交換順序也可,只要在步驟四前完成這兩步就好)

非 SVN 使用者:由於沒有轉移 log 的需求,因此直接在資料夾中修改資料夾名稱 & .csproj 檔名即可。

 

步驟三:.sln 方案檔內容路徑更改

使用任何文字編輯器打開 .sln 檔,將目標專案的檔案路徑修改為更名後的正確路徑,存檔。(在進行此步驟之前如果就直接用 VS 打開 .sln 檔,會發現更名的專案在方案管理員那邊顯示為讀取失敗,因為 .sln 未更改 VS 就會嘗試從原本舊路徑去讀取專案,結果當然是什麼也找不到)

 

步驟四:確認外部更名成功

重啟 VS,此時方案管理器(Solution Explorer)列出的專案名稱應該已被更名 (因修改 .sln 所致)。

 

步驟五:修改各 References 中仍為舊名稱的專案引用

以文字編輯器逐一打開有 Reference 到原專案的其它專案 .csproj 檔,在 ProjectReference 節點找到原專案名稱後可修改。(此步驟不影響專案建置與運作,因為 Reference 路徑已在前面修改 .sln 檔的步驟中被自動修改,但由於 Reference 名稱不會被自動修改,顯示在各專案 References 中的仍會是舊名稱,如果看了會乃ㄧㄜˋ就多做這一步吧)

 

步驟六:修改專案屬性資訊

對更名後的專案點右鍵開啟屬性(Properties)視窗,將 Assembly name、Default namespace 以及 Assembly Information 中 Title、Product 欄都手動修改為新名稱。(此步驟目的在於讓此專案往後透過 VS 自動產生的 namespace 和建置產生的 dll 名稱都可以與新名稱一致)

 

步驟七:重新建置

這時候 Error List 視窗可能還是有許多錯誤訊息,找不到 namespace 什麼的,進行以下操作:建置(Build) > 清除方案(Clean Solution) 後再點 建置(Build) > 建置方案(Build Solution)。

 

步驟八:全域搜尋漏網之魚

此時錯誤訊息應該都消失了,建置也可以通過,但還是建議以原專案名稱做全域搜尋抓一下漏網之魚,因為如 .cshtml 檔中有使用 using 原專案的 namespace 是不會在以上任何步驟中被連動修改的,將會在執行到該頁面才噴錯,噴錯時的 exception 錯誤訊息蠻一目瞭然的,發生錯誤時再回頭修改也並不困難。

 

步驟九:[非 SVN 使用者可略過] Commit

SVN commit,會有超乎預期多的檔案需要被提交修改,其中不外乎是被刪除的原檔名資料夾與專案檔案、各處含有被 rename 的 namespace 的 .cs 檔或 .cshtml 檔、各個手動修改的 .csproj 檔和 .sln 檔等等。

 

照著以上步驟一步一步操作,就不用再為了專案改名而煩心,也不用再擔心改不完全而卻步囉。筆者使用的開發工具仍是 Visaul Studio 2015,不曉得 2017 在這部分是不是已經有做得更方便了,以上分享內容如有誤也請不吝指教!有空再補上圖片 XD