[VB2003/2005] 共用原始碼

會寫這篇的原因,基本上是我在操作介面上找不到如何處理,所以我也只會用手動改原始碼的方式變更。

共用原始碼
優點:減少同類型原始碼重複開發、維護,提高程式碼的可用性。
缺點:會把用不到的程式碼一起編繹到專案去,造成垃圾程式碼段,使得執行檔開啟執行時,延長載入時間。長時間會有相容問題導致效能下降。
微軟並不建議這樣共用,所以我認為這也是 IDE 環境中找不到操作的方式,微軟的建議處理方式:
原始碼使用範例原始碼程式庫,類似樣本檔,在需要插入該段原始碼的地方,按滑鼠右鍵、選擇插入程式碼片段。這部份個人以為比較適合用在常打的一些程式碼段落,事實上我幾乎用不到這個功能,因為要是我在 A、B 兩處都插入原始碼,在 B 處發現原始碼有問題並更新後,並不會記得在 A 處有相同的 bug ,變成潛藏的隱藏性 bug 。
將原始碼依用途使用類別庫封裝到不同的 DLL 內,使得部分更新可以更輕易,加速執行檔載入與執行。
所以微軟的加入現有程式碼時,會複製一份新的程式碼到所指定的專案去,並不會使用原先的程式碼,若新程式碼有更新、維護改善,既有原始碼並不會發生改變。
上面先把背景描述完,接下來是否要這樣共用原始碼,則由使用者自行判斷評估。我自己是常共用啦~
請用筆記本開啟你任意專案的專案檔:project.vbproj
可以找到類似這樣的節區:
<ItemGroup>
<Compile Include="Startup.vb" />
</ItemGroup>
 其中,<ItemGroup> 有很多塊,要稍微辨識一下,才找得到原始碼這區。
把 Compile 變成:
 <Compile Include="相對或絕對路徑\檔名.vb">
<Link>樹狀路徑\檔名.vb</Link>
<SubType>Code</SubType>
</Compile>
即可。
例如說專案上層目錄有 Include\Class\Database\cADONet.vb 供各專案共用,則為:
 <Compile Include="..\Include\Class\Database\cADONet.vb">
<Link>Include\Class\Database\cADONet.vb</Link>
<SubType>Code</SubType>
</Compile>
其中
Include 為實體檔案,我自己喜歡用相對路徑,這樣在備份、遷移至別台電腦、遷移至子目錄會比較方便。
Link 為方案總管顯示的路徑及檔名,可與實體路徑完全不一樣或更名,比如說改為 共用類別\資料庫\AdoNet存取.vb ,若是希望在方案總管加入樹狀路徑,則以目錄方式 “" 區隔,平時載入專案時,就不會自動展開樹狀目錄,操作管理起來比較方便。
效用舉例:
例如此資料庫存取共用類別中,在一開始在專案 A 開發 ADO.NET 存取資料庫時,可能只撰寫了 Access 的程式碼,其後在專案 B 開發時,加入 MySQL 支援,只要專案 A 重新進行編譯,專案 A 就獲得支援 MySQL 的能力,不需要再為專案 A 撰寫相同的函式庫,若專案 A 發現存取 MySQL 的 bug 而加以維護,則專案 B 僅需重新編譯即可完成相同的 bug 修復。
實際應用:
在開發專案時,有時需要用小型的測試專案來測試某個功能及函數,這時,共用原始碼就變的很有用,因為在測試專案內僅須要針對測試函數進行開發、呼叫、修正即可,原專案即可獲得相同的功能,或是降低維護的困擾,縮小焦點範圍。在 VS2005 有新增測試元件功能,而 VSTT 版本有更強大的元件測試,但是有時測試專案也是我們的需求,這時,共用原始碼就是一個很好的方法,你不需要剪剪貼貼,也可以避免漏掉某段程式碼沒剪貼而發生的錯誤。
其他:
共用資源檔時,可能需要變更物件名為同名物件,比如說 Image.resx 更名為 Image.resx ,觸發 VS2005 自動編譯引用功能,才能正確的在原始碼中識別出來。
Categories: 技術分享 | 5 則迴響

文章導覽

5 thoughts on “[VB2003/2005] 共用原始碼

  1. longan

    璉璉前輩,從小吳的VB討論區到VB入門網有一段時間沒看到您,最近查資料發現您的部落格
    果然如往常一樣提供很多心得供後輩參考
     
    想請問前輩,日前家中使用VB2005將公司的VB2003撰寫的ASP.NET專案開啟,發覺更動實在不小
    為了方便維護不敢貿然轉換成2005來發展程式,前輩可有推薦的書籍介紹兩者的差異處及如何銜接?

    喜歡

  2. 子璉

    網誌這邊屬於不完整的心得,是零散的點心得。在網誌首頁有站長個人網站的連結可參考。
    關於問題討論,可前往網誌首頁正下方微軟官方 ASP.NET 討論區發文,本篇的主題並不是跨 2003/2005 共用程式碼,而是指相同版本共用程式碼的方法相同。當然,在沒有引用到 .Net framework 2.0 的類別部份,2003/2005 可在模組或物件類別項目上共用原始碼,from 則不行。

    喜歡

  3. Sandra

    所以有辦法在vs2005執行vs2003的程式,並寫好之後放回2003的環境執行嗎

    喜歡

  4. 子璉

    不行。
    本篇的主題是針對同編譯器版本,不同專案間的原始碼共用,並非是不同編譯器版本。

    喜歡

  5. 通告: VB2005 共用原始碼 2 | 鄭子璉

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: