




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、使用 Visual Stidio?.NET 和 Visual SourceSafe 進(jìn)行團(tuán)隊(duì)開(kāi)發(fā)使用 Visual Studio?.NET 和VisualSourceSafJM進(jìn)行團(tuán)隊(duì)開(kāi)發(fā)本文檔中所包含的信息,包括URL和其它互聯(lián)網(wǎng)站點(diǎn)參考資料,隨時(shí)都會(huì)在不作知會(huì)的情況下發(fā)生改變。除非額外的說(shuō)明,此處用以舉例的公司、機(jī)構(gòu)、產(chǎn)品、域名、e-mail地址、商標(biāo)、人物、地點(diǎn)和事件純屬虛構(gòu),與任意一個(gè)實(shí)際存在的公司、機(jī)構(gòu)、產(chǎn)品、域名、e-mail地址、商標(biāo)、人物、地點(diǎn)或事件沒(méi)有任何聯(lián)系,不適于作任何推論或聯(lián)想。遵守所有有關(guān)的 著作權(quán)法規(guī)是使用者應(yīng)承擔(dān)的責(zé)任。在不限制著作權(quán)所規(guī)定的權(quán)利的前提下,如果沒(méi)有
2、微軟公司明確的書(shū)面許可,本文檔的任何部分不允許復(fù)制、存儲(chǔ)或者引入到任一檢索系統(tǒng)中,或者以任何形式或方法(包括電子的、機(jī)械的、影印的、錄音帶及其它途徑)進(jìn)行傳播,而不 管出于何種目的。微軟、MS-DOS、Windows、Visual C#、Visual Basic、Visual C+、Visual Studio 和 Win32 是微軟公司在美國(guó)及其它國(guó)家的貿(mào)易商標(biāo)或者注冊(cè)商標(biāo)。? 2002微軟公司版權(quán)所有。版本號(hào)1.0此處提到的其它產(chǎn)品和公司名可能是其各自所有者的商標(biāo)。-6 -目錄目錄2緒言1誰(shuí)需要閱讀本手冊(cè)1您需要知道什么1術(shù)語(yǔ)2系統(tǒng)2內(nèi)部系統(tǒng)和外部系統(tǒng)的分界線 2解決方案2項(xiàng)目3第一章 介紹
3、團(tuán)隊(duì)環(huán)境 4團(tuán)隊(duì)開(kāi)發(fā)服務(wù)器和工作站 5VSS服務(wù)器5構(gòu)建服務(wù)器5開(kāi)發(fā)工作站5數(shù)據(jù)庫(kù)服務(wù)器6Web服務(wù)器6第二章 ASP.NET網(wǎng)絡(luò)應(yīng)用軟件開(kāi)發(fā)模型7隔離模型7半隔離模型7不隔離模型7使用隔離開(kāi)發(fā)模型 8避免采用半隔離和不隔離開(kāi)發(fā)模型 8更多信息9第三章 構(gòu)造解決方案和項(xiàng)目 10Visual Studio .NET 解決方案和項(xiàng)目 10Visual Studio .NET 項(xiàng)目 10Visual Studio .NET 解決方案 10解決方案和編譯連接依存關(guān)系 11服從源碼控制的文件11不服從源碼控制的文件 12始終使用 Visual Studio .NET 作源碼控制操作 12劃分解決方案和項(xiàng)
4、目 12盡可能使用單解決方案模型 13對(duì)于較大的系統(tǒng),考慮使用分塊單解決方案模型 14僅在絕對(duì)必要的情況下使用多解決方案模型 15考慮將項(xiàng)目組合成解決方案 16在解決方案和項(xiàng)目中使用一個(gè)統(tǒng)一的文件夾結(jié)構(gòu) 17定義一個(gè)通用的根文件夾 17在解決方案和項(xiàng)目中采用“父子”文件夾結(jié)構(gòu) 17如何創(chuàng)建一個(gè)新的 ASP.NET網(wǎng)絡(luò)項(xiàng)目 17如何將一個(gè)網(wǎng)絡(luò)應(yīng)用軟件分割成多個(gè)項(xiàng)目 18如何創(chuàng)建一個(gè)新的非網(wǎng)絡(luò)項(xiàng)目 19仔細(xì)考慮命名規(guī)則 19在項(xiàng)目和組件中使用通用的名稱(chēng) 19使用一個(gè)通用的根域名空間名稱(chēng) 20在VSS和本地文件夾中使用通用的名稱(chēng) 20第四章管理依存關(guān)系21引用組件21使用項(xiàng)目引用21僅在必要的時(shí)候使
5、用文件引用 22在項(xiàng)目和文件弓I用 中使用 Copy Local = True 22在單解決方案系統(tǒng)和分塊單解決方案系統(tǒng)中使用文件引用 23在多解決方案系統(tǒng)中使用文件引用 23考慮使用隔離開(kāi)發(fā)方案 24使用虛擬驅(qū)動(dòng)器盤(pán)符以獲得更大的靈活性 24總是使用文件引用對(duì)發(fā)布編譯連接進(jìn)行引用 24使用引用路徑以協(xié)助隔離開(kāi)發(fā)和調(diào)試 25如何為特定項(xiàng)目設(shè)置引用路徑 26在項(xiàng)目中包含外部系統(tǒng)組件 26考慮在VSS中共享外部系統(tǒng)組件 26使用Add Reference對(duì)話(huà)框中的.NET標(biāo)簽 26引用網(wǎng)絡(luò)服務(wù)27在開(kāi)發(fā)中確定網(wǎng)絡(luò)服務(wù)的版本 27始終使用動(dòng)態(tài)的統(tǒng)一資源定位器( URL) 27如何使用動(dòng)態(tài) URL和用
6、戶(hù)配置文件 28更新一個(gè)網(wǎng)絡(luò)服務(wù)引用 29引用數(shù)據(jù)庫(kù)29如何為數(shù)據(jù)庫(kù)連接串使用用戶(hù)配置文件 29數(shù)據(jù)庫(kù)開(kāi)發(fā)30中央數(shù)據(jù)庫(kù)服務(wù)器30本地服務(wù)器30使用數(shù)據(jù)庫(kù)腳本對(duì)變化進(jìn)行管理 30考慮 Visual Studio .NET 項(xiàng)目31引用COM對(duì)象31始終生成兼容的 Interop 組件 31盡可能使用主 Interop 組件 32如果沒(méi)有主Interop組件,請(qǐng)使用 TLBIMP 32在本地注冊(cè)COM類(lèi)32調(diào)用服務(wù)組件32第五章創(chuàng)建過(guò)程34處理依存關(guān)系 34控制集合版本34使用自動(dòng)增加的版本號(hào)字 35使用靜態(tài)的版本號(hào)35考慮集中集合的版本號(hào) 36構(gòu)架服務(wù)器文件夾結(jié)構(gòu) 36考慮維護(hù)原有的結(jié)構(gòu)36不
7、改變創(chuàng)建的輸出路徑 38創(chuàng)建腳本38生成創(chuàng)建版本號(hào)39標(biāo)識(shí)源文件40析取最新的源文件40創(chuàng)建一個(gè)最新的文件夾 40用 Devenv.exe 創(chuàng)建解決方案 40將輸出拷貝到最新的文件夾中 41在最新的文件夾下規(guī)劃集合輸出 41拷貝最新的文件夾來(lái)創(chuàng)建一個(gè)版本文件夾 41將最新文件夾改名為 LatestBroken 42解決一個(gè)失敗的創(chuàng)建過(guò)程 42重新創(chuàng)建多重解決系統(tǒng) 42Email發(fā)送創(chuàng)建結(jié)果 42創(chuàng)建過(guò)程打包42創(chuàng)建創(chuàng)建腳本賬號(hào) 43更多信息43第六章 使用 Visual SourceSafe 工作 44創(chuàng)建一個(gè)新的解決方案和工程 45怎樣向VSS中添加一個(gè)新的解決方案 46第一次在現(xiàn)有的解決方
8、案的基礎(chǔ)上運(yùn)行 47接著在現(xiàn)有的解決方案和工程的基礎(chǔ)上工作 48將一個(gè)新的工程添加到一個(gè)現(xiàn)有的解決方案中去 48加載源文件到 VSS中49只加載那些待建的文件 49文件與文件夾的重命名和刪除 49對(duì)文件進(jìn)彳T重命名 49重命名一個(gè)工程 50整理舊工程的文件51從VSS中刪除一個(gè)文件 51從VSS中刪除一個(gè)工程 52從VSS中刪除一個(gè)解決方案 52多重調(diào)出53調(diào)出解決方案文件53更多信息53創(chuàng)建一個(gè)開(kāi)發(fā)域54沒(méi)有信任關(guān)系的獨(dú)立的域 55有信任關(guān)系的獨(dú)立域 55部分的合作域55VSS服務(wù)器56構(gòu)架服務(wù)器56開(kāi)發(fā)工作臺(tái)57Visual Studio Enterprise Templates 58備份
9、服務(wù)器58SQL服務(wù)器59Web服務(wù)器59安裝和控制VSS 59在服務(wù)器上創(chuàng)建一個(gè)共享數(shù)據(jù)庫(kù) 59用只讀訪問(wèn)的模式共享 VSS安裝文件夾60至少為.NET Development工程創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù) 60考慮創(chuàng)建額外的 VSS數(shù)據(jù)庫(kù)60共享數(shù)據(jù)庫(kù)文件夾并創(chuàng)建適當(dāng)?shù)脑S可 60考慮使用VSS工程安全措施 61為開(kāi)發(fā)者和創(chuàng)建腳本添加用戶(hù)賬號(hào) 61限制訪問(wèn)管理工具 61發(fā)現(xiàn)并修補(bǔ)數(shù)據(jù)錯(cuò)誤61更多信息62考慮安裝 Fault Tolerant Storage 系統(tǒng) 62更多信息62在客戶(hù)端安裝VSS 62考慮使用 VSS影子目錄 62更多信息63BuildIt Visual Studio .NET的一
10、個(gè)自動(dòng)編譯連接工具 64下載和安裝BuildIt 65對(duì)安裝進(jìn)行測(cè)試65用戶(hù)指導(dǎo)67維護(hù)編譯連接序號(hào)67編譯連接解決方案67檢查編譯連接報(bào)告68重新編譯連接一個(gè)解決方案 68歸檔編譯連接69用電子郵件傳送編譯連接結(jié)果 69版本化組件69配置和操作70部署 BuildIt 70配置 BuildIt 71保護(hù) BuildIt 73解決BuildIt故障 73已知問(wèn)題73設(shè)計(jì)和實(shí)現(xiàn)74問(wèn)題描述74設(shè)計(jì)目標(biāo)74解決方案描述75改進(jìn)與提高79類(lèi)引用80Buildinitializer 80BuildItSectionHandler 80BuildManager 81SourceSafeHelper 82
11、BuildItResourceManager 83BuildItCommandLineArgs 83常見(jiàn)問(wèn)題84我是否能夠修改 BuildIt的源代碼? 84我是否需要在運(yùn)行 BuildIt之前安裝 Visual Studio ? 84附錄小結(jié)84關(guān)于作者84關(guān)于 Sapient 84合作者85反饋85合作者85其它資源85使用 Visual Stidio?.NET 和 Visual SourceSafe 進(jìn)行團(tuán)隊(duì)開(kāi)發(fā)緒言本手冊(cè)提供指導(dǎo)和建議,使您能夠成功地建立一個(gè)團(tuán)隊(duì)開(kāi)發(fā)環(huán)境并且工作于其中。如果您正要開(kāi)始一個(gè).NET團(tuán)隊(duì)開(kāi)發(fā)項(xiàng)目,首先需要了解在一個(gè)團(tuán)隊(duì)開(kāi)發(fā)環(huán)境中如何完成開(kāi)發(fā)過(guò)程。需要知道如何
12、設(shè)置并且使用Microsoft? Visual Studio? .NET 集成開(kāi)發(fā)環(huán)境(IDE)提供的團(tuán)隊(duì)開(kāi)發(fā)特性,并且還需要掌握相關(guān)開(kāi)發(fā)技巧(例如如何正確地設(shè)置組件引用),開(kāi)發(fā)團(tuán)隊(duì) 成員們將遵循這些技巧以保證團(tuán)隊(duì)工作能順利開(kāi)展。本手冊(cè)分成以下幾個(gè)章節(jié):第一章,“介紹團(tuán)隊(duì)環(huán)境”。本章節(jié)提供了對(duì)團(tuán)隊(duì)環(huán)境的一個(gè)整體概述并且介紹了關(guān)鍵的編譯連接模塊和過(guò)程。閱讀本章節(jié)能夠大致了解本手冊(cè)的范圍,并且理解本文檔所基于的 團(tuán)隊(duì)開(kāi)發(fā)模型。第二章," ASP.NET網(wǎng)絡(luò)應(yīng)用軟件開(kāi)發(fā)模型”。本章節(jié)描述了在團(tuán)隊(duì)開(kāi)發(fā)環(huán)境中構(gòu)建網(wǎng)絡(luò) 應(yīng)用軟件應(yīng)該采取的方法。第三章,"構(gòu)造解決方案和項(xiàng)目”。本章節(jié)解釋
13、了應(yīng)該如何組織和構(gòu)造Visual Studio .NET解決方案和項(xiàng)目,并且在“單解決方案”開(kāi)發(fā)模型和“多解決方案”開(kāi)發(fā)模型之間作出權(quán)衡。它同時(shí)也對(duì)您用于存儲(chǔ)本地項(xiàng)目文件以及Microsoft Visual SourceSafe? (VSS) 下的文件夾結(jié)構(gòu)作出建議。第四章,“管理依存關(guān)系”。本章節(jié)解釋了如何處理組件引用、網(wǎng)絡(luò)引用、數(shù)據(jù)庫(kù)引用和 COM組件引用。第五章,“創(chuàng)建過(guò)程”。本章節(jié)描述了創(chuàng)建過(guò)程、創(chuàng)建服務(wù)器所起的作用以及用于生成系 統(tǒng)編譯連接結(jié)果的自動(dòng)編譯連接腳本。第六章,“使用Visual SourceSafe? ”。本章節(jié)提供了一系列步驟,引領(lǐng)您完成一些通用的開(kāi)發(fā)任務(wù),仞0口如何向
14、 Visual SourceSafe中添加解決方案和項(xiàng)目,如何從 VSS中獲取解決方 案,以及日常操作中如何登記和調(diào)出文件等。本章節(jié)使您快速掌握一些基本任務(wù)。第七章,“建立和維護(hù)團(tuán)隊(duì)環(huán)境”。本章節(jié)描述了團(tuán)隊(duì)環(huán)境的基礎(chǔ)架構(gòu)以及環(huán)境中工作站和服務(wù)器所要求的硬件和軟件配置。它同時(shí)也提供了如何創(chuàng)建和維護(hù)一個(gè)VSS數(shù)據(jù)庫(kù)的指導(dǎo)。如果希望能從本手冊(cè)中得到盡可能多的信息,請(qǐng)按順序通讀本手冊(cè)的所有章節(jié)。誰(shuí)需要閱讀本手冊(cè)本手冊(cè)為開(kāi)發(fā)團(tuán)隊(duì)的領(lǐng)導(dǎo)者、普通開(kāi)發(fā)人員、測(cè)試團(tuán)隊(duì)成員和系統(tǒng)管理員提供指導(dǎo)。如果 您計(jì)劃或者是正在開(kāi)發(fā)一個(gè)基于團(tuán)隊(duì)的.NET開(kāi)發(fā)項(xiàng)目,請(qǐng)閱讀本手冊(cè)。您需要知道什么要想使用本手冊(cè)去建立一個(gè)適用于.N
15、ET的團(tuán)隊(duì)開(kāi)發(fā)環(huán)境和開(kāi)發(fā)過(guò)程,需要有一些使用Visual Studio .NET進(jìn)行開(kāi)發(fā)的經(jīng)驗(yàn)。本手冊(cè)假設(shè)您曾經(jīng)創(chuàng)建.NET組件和網(wǎng)絡(luò)服務(wù),或者至少是熟悉它們。您也應(yīng)當(dāng)知道在基于團(tuán)隊(duì)的軟件開(kāi)發(fā)項(xiàng)目中一直存在的普遍問(wèn)題和當(dāng)前面臨的挑戰(zhàn)。如果 有使用源代碼控制系統(tǒng)尤其是 VSS進(jìn)行開(kāi)發(fā)的經(jīng)驗(yàn)?zāi)蔷透昧恕W⒁猓罕臼謨?cè)主要說(shuō)明作為源代碼控制系統(tǒng)的VSS 6.0c版本(此版本封裝在VisualStudio.NET中)的使用。然而,本手冊(cè)的多數(shù)內(nèi)容和其中所討論的許多過(guò)程同樣也適用于其它 改動(dòng)過(guò)的管理系統(tǒng),它們中的許多還可以直接集成到Visual Studio .NET集成開(kāi)發(fā)環(huán)境(IDE)當(dāng)中。術(shù)語(yǔ)“系統(tǒng)
16、”、“解決方案”和“項(xiàng)目”這些詞匯將在本手冊(cè)中廣泛使用,可能造成沉重的閱 讀負(fù)擔(dān)。以下部分說(shuō)明了在本手冊(cè)中使用這些詞匯的上下文。系統(tǒng)詞匯“系統(tǒng)”指的是您正在開(kāi)發(fā)的整個(gè)應(yīng)用軟件。系統(tǒng)最終由發(fā)布到一個(gè)產(chǎn)品環(huán)境中的所 有不同組合的組件組成。內(nèi)部系統(tǒng)和外部系統(tǒng)的分界線本手冊(cè)同時(shí)也引入了內(nèi)部系統(tǒng)和外部系統(tǒng)分界線的概念。當(dāng)開(kāi)始考慮系統(tǒng)中的哪些組件將 在中央編譯連接過(guò)程中進(jìn)行編譯連接,哪些組件則落到了編譯連接過(guò)程的范圍之外,而僅僅被 當(dāng)作外部依存關(guān)系加以引用時(shí),這種區(qū)分變得非常重要。以下文字對(duì)系統(tǒng)分界線作出了描述:內(nèi)部系統(tǒng)組件被作為系統(tǒng)編譯連接過(guò)程的一部分進(jìn)行編譯連接。.NET框架組件。外部系統(tǒng)組件是其它所
17、有組件,包括第三方組件和 圖1說(shuō)明了內(nèi)部系統(tǒng)和外部系統(tǒng)分界線的概念。解決方案如果您是Visual Studio .NET的入門(mén)者,“解決方案”對(duì)您來(lái)說(shuō)也是新的詞匯。一個(gè)解決方 案本質(zhì)上代表了正在從事的所有工作。Visual Studio .NET使用解決方案作為單個(gè)項(xiàng)目的容納體這些產(chǎn)生了您的系統(tǒng)組件(.NET組件)。解決方案文件維護(hù)了項(xiàng)目的依存關(guān)系信息,主要用于控制編譯連接過(guò)程。解決方案在第三章一一“構(gòu)造解決方案和項(xiàng)目”的“Visual Studio .NET解決方案”中有更進(jìn)一步討論。項(xiàng)目在本手冊(cè)的上下文中,有三種類(lèi)型的項(xiàng)目:一般開(kāi)發(fā)項(xiàng)目。 詞匯“項(xiàng)目”在它最寬松的語(yǔ)義中指的是開(kāi)發(fā)團(tuán)隊(duì)當(dāng)前所
18、做的工作。Visual Studio .NET項(xiàng)目。項(xiàng)目文件被 Visual Studio .NET用作與個(gè)體組件相關(guān)的配置設(shè)置項(xiàng) 的容納體。這在第三章“構(gòu)造解決方案和項(xiàng)目"的"Visual Studio .NET項(xiàng)目”中有更進(jìn)一步討論。Visual SourceSafe項(xiàng)目。VSS數(shù)據(jù)庫(kù)中的一個(gè)項(xiàng)目?jī)H僅是文件(通常是邏輯相關(guān))的集合體。一個(gè)VSS項(xiàng)目類(lèi)似于一個(gè)附加了版本控制支持的操作系統(tǒng)文件夾。-44 -第一章 介紹團(tuán)隊(duì)環(huán)境許多元素、過(guò)程和任務(wù)組合在一起,使得基于團(tuán)隊(duì)的軟件開(kāi)發(fā)項(xiàng)目變?yōu)榭赡?。本文檔主要 說(shuō)明了兩個(gè)核心過(guò)程:開(kāi)發(fā)過(guò)程編譯連接過(guò)程雖然這是兩個(gè)獨(dú)立的過(guò)程,但是它
19、們共享許多東西,因此,開(kāi)發(fā)在兩種場(chǎng)合下都適用工作 慣例和項(xiàng)目結(jié)構(gòu)是非常必要的。團(tuán)隊(duì)開(kāi)發(fā)環(huán)境如圖1.1所示。圖的陰影部分說(shuō)明了本文檔所定位的區(qū)域。請(qǐng)仔細(xì)研讀這個(gè)圖 表,因?yàn)樗x了本文檔的剩余章節(jié)的工作模型。In Sc&peIT ResdiJrce 土嘯muld M a iOH 內(nèi) fbIhMCMIHuikl Process算耐電lt?FCrteb Services ServerMSI Fa匚 kid臚Build ServerMSI PackageDeveiopmen! Tram國(guó)I TrackingDaploymt*nt Process oChEEk In J CM / LagAutC
20、ITHlLFdPioduct BuiklsT,4ri芹 WiulMXZ圖1.1團(tuán)隊(duì)開(kāi)發(fā)環(huán)境團(tuán)隊(duì)開(kāi)發(fā)服務(wù)器和工作站圖1.1中關(guān)鍵服務(wù)器和工作站的任務(wù)和職責(zé)將在下面的部分中加以說(shuō)明。其它基本服務(wù)器, 例如備份服務(wù)器,出于簡(jiǎn)潔的目的在圖中不作標(biāo)示。如果想得到關(guān)于團(tuán)隊(duì)環(huán)境的基礎(chǔ)架構(gòu)的詳 信信息,包括硬件和軟件需求,請(qǐng)參閱第七章一一“建立和維護(hù)團(tuán)隊(duì)環(huán)境”。VSS服務(wù)器這是一個(gè)中心服務(wù)器,駐留了 一個(gè)或多個(gè)用于為項(xiàng)目源文件提供版本控制訪問(wèn)的微軟VisualSourceSafe (VSS)數(shù)據(jù)庫(kù)。作為一個(gè)開(kāi)發(fā)人員,您在微軟Visual Studio?.NET的集成開(kāi)發(fā)環(huán)境(IDE)中進(jìn)行登記和調(diào)出文件的日常
21、操作時(shí),需要與之發(fā)生交互。它也能被編譯連接腳本所 訪問(wèn),以獲得編譯連接當(dāng)前系統(tǒng)所需的最新的源代碼。更多信息關(guān)于VSS項(xiàng)目應(yīng)該如何構(gòu)造的信息,請(qǐng)參閱第三章一一“構(gòu)造解決方案和項(xiàng)目”中的“在解決方案和項(xiàng)目中使用一個(gè)統(tǒng)一的文件夾結(jié)構(gòu)”。關(guān)于更多如何配置VSS服務(wù)器的信息,請(qǐng)參閱第七章一一“建立和維護(hù)團(tuán)隊(duì)環(huán)境”中的“安 裝和管理VSS”。構(gòu)建服務(wù)器此服務(wù)器上運(yùn)行的一個(gè)自動(dòng)編譯連接腳本被用來(lái)編譯和連接您的整個(gè)系統(tǒng)。編譯連接腳本 對(duì)于所有的軟件開(kāi)發(fā)項(xiàng)目而言都是一個(gè)關(guān)鍵因素。它允許以一種自動(dòng)的、一致的、可重復(fù)的方 式生成您的系統(tǒng)的一系列連續(xù)版本。編譯連接過(guò)程生成的輸出組件在此服務(wù)器的文件夾中得以 維護(hù)。更多
22、信息有關(guān)引用外部組件的更多信息,請(qǐng)參考第四章一一“管理依存關(guān)系”中的“引用組件”。 有關(guān)編譯連接過(guò)程的更多信息,請(qǐng)參閱第五章一一“創(chuàng)建過(guò)程”。開(kāi)發(fā)工作站所有工作站必須以一種相似的方式進(jìn)行配置。這包括了Visual Studio .NET集成開(kāi)發(fā)環(huán)境的安裝和配置。企業(yè)模板能夠幫助您完成這項(xiàng)工作。更多信息關(guān)于使用企業(yè)模板的好處,請(qǐng)參閱第七章一一“建立和維護(hù)團(tuán)隊(duì)環(huán)境”中的“ Visual Studio 企業(yè)模板”。數(shù)據(jù)庫(kù)服務(wù)器這些服務(wù)器上駐留了微軟 SQL Server?對(duì)象,并提供了一個(gè)中心區(qū)域,開(kāi)發(fā)人員能夠連接 位于其上的數(shù)據(jù)庫(kù),這些數(shù)據(jù)庫(kù)的模式符合當(dāng)前的系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)。在一些場(chǎng)合中,您也需要
23、開(kāi)發(fā)工作站上的本地SOL Server數(shù)據(jù)庫(kù)能夠提供獨(dú)立的單元測(cè)試。例如,本地服務(wù)器允許您管 理當(dāng)前的一組測(cè)試數(shù)據(jù),并且當(dāng)您在操作這些數(shù)據(jù)時(shí),不會(huì)影響其他團(tuán)隊(duì)成員。更多信息關(guān)于在團(tuán)隊(duì)環(huán)境中使用數(shù)據(jù)庫(kù)的更多信息,請(qǐng)參閱第四章一一“管理依存關(guān)系”中的“數(shù) 據(jù)庫(kù)開(kāi)發(fā)”。關(guān)于如何在一個(gè)團(tuán)隊(duì)環(huán)境中靈活管理連接串的更多信息,請(qǐng)參閱第四章一一“管理依存關(guān) 系”中的“引用數(shù)據(jù)庫(kù)”。Web服務(wù)器團(tuán)隊(duì)環(huán)境中Web服務(wù)器的主要功能是駐留當(dāng)前出于開(kāi)發(fā)過(guò)程中的可擴(kuò)展置標(biāo)語(yǔ)言( XML ) 網(wǎng)絡(luò)服務(wù)。當(dāng)負(fù)責(zé)網(wǎng)絡(luò)服務(wù)的開(kāi)發(fā)團(tuán)隊(duì)在他們的本地工作站上使用微軟Internet信息服務(wù)(IIS)開(kāi)發(fā)這些服務(wù)時(shí),可以在中央Web服務(wù)
24、器上發(fā)布這些服務(wù),使得其他開(kāi)發(fā)人員或團(tuán)隊(duì)能夠從客戶(hù)項(xiàng)目中加以引用。更多信息關(guān)于使用網(wǎng)絡(luò)服務(wù)的更多信息,請(qǐng)參閱第四章一一“管理依存關(guān)系”中的“引用網(wǎng)絡(luò)服務(wù)”第二章 ASP.NET網(wǎng)絡(luò)應(yīng)用軟件開(kāi)發(fā)模型本章節(jié)描述了在一個(gè)團(tuán)隊(duì)環(huán)境中應(yīng)該如何進(jìn)行網(wǎng)絡(luò)應(yīng)用軟件的開(kāi)發(fā)。它推薦使用網(wǎng)絡(luò)開(kāi)發(fā) 的一個(gè)隔離模型,并且將此模型與其它可選擇方案進(jìn)行比較。開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用軟件存在三種主要的模型:隔離(推薦)半隔離不隔離隔離模型使用這種模型,您將在一個(gè)完全孤立的環(huán)境中,在自己的開(kāi)發(fā)工作站上,使用自己的本地Web服務(wù)器(http:/localhost)進(jìn)行開(kāi)發(fā)(編輯、調(diào)試并且運(yùn)行)。對(duì)主要的源文件的訪問(wèn)通過(guò) 一個(gè)位于網(wǎng)絡(luò)文件共享
25、中的微軟Visual SourceSafe? (VSS)數(shù)據(jù)庫(kù)加以控制。您可以選擇允許或是不允許開(kāi)發(fā)人員同時(shí)調(diào)出相同的文件。關(guān)于更多的信息,請(qǐng)參閱第六章一一“使用VisualSourceSafe?"中的"多重調(diào)出”。半隔離模型使用這種模型,您將使用一個(gè)公共的Web服務(wù)器(http:/remoteserver)進(jìn)行應(yīng)用軟件開(kāi)發(fā)和調(diào)試。通過(guò)一個(gè)位于網(wǎng)絡(luò)文件共享中的VSS數(shù)據(jù)庫(kù)進(jìn)行文件的登記和調(diào)出。您正在工作的項(xiàng)目拷貝位于公共 Web服務(wù)器上的一個(gè)特定的項(xiàng)目文件夾當(dāng)中,這也是一個(gè)微軟Internet信息服務(wù)(IIS)的虛擬根區(qū)。每一個(gè)開(kāi)發(fā)人員在這個(gè)公共Web服務(wù)器上有一個(gè)唯一的文
26、件夾。注意:當(dāng)?shù)谝淮螐腣SS處獲取一個(gè)網(wǎng)絡(luò)項(xiàng)目時(shí), 微軟Visual Studio?.NET不允許將工作文件放置在一個(gè)已經(jīng) 包含其它網(wǎng)絡(luò)項(xiàng)目的文件夾當(dāng)中。如果VSS多重調(diào)出功能被使能的話(huà),開(kāi)發(fā)人員能夠同時(shí)調(diào)出并且編輯同一個(gè)文件,但是只 有一個(gè)開(kāi)發(fā)人員能夠于任意時(shí)間在Web服務(wù)器上對(duì)應(yīng)用軟件進(jìn)行調(diào)試。這是因?yàn)楫?dāng)您調(diào)試一個(gè)應(yīng)用軟件時(shí),IIS是處于阻塞狀態(tài)的。這就阻止了服務(wù)器為來(lái)自其它應(yīng)用軟件的網(wǎng)絡(luò)請(qǐng)求提供服 務(wù)。不隔離模型使用這個(gè)模型,您也將使用一個(gè)公共的Web服務(wù)器(http:/remoteserver)進(jìn)行應(yīng)用軟件的開(kāi)發(fā)和調(diào)試。然而,在服務(wù)器上將不會(huì)擁有自己的工作拷貝文件,并且所有開(kāi)發(fā)人員使用
27、一個(gè)統(tǒng) 一的文件夾和虛擬根區(qū),例如, http:/remoteserver/projectname。當(dāng)保存一個(gè)文件的變化時(shí),工作站上位于內(nèi)存中的文件版本被使用超文本傳輸協(xié)議(HTTP )傳送到服務(wù)器上。這將覆蓋服務(wù)器上的已有拷貝。隨后在您使用集成的源代碼控制服務(wù)去登記所作的更改時(shí),微軟 FrontPageT展名被用于更新文件在一個(gè)VSS數(shù)據(jù)庫(kù)中的主拷貝。此三種模型如圖2.1所示。圖2.1網(wǎng)絡(luò)開(kāi)發(fā)模型使用隔離開(kāi)發(fā)模型強(qiáng)烈推薦在團(tuán)隊(duì)開(kāi)發(fā)中采用隔離開(kāi)發(fā)模型,因?yàn)樗峁┝嗽S多重大的優(yōu)點(diǎn)。隔離開(kāi)發(fā)的優(yōu)點(diǎn)采用隔離開(kāi)發(fā)模型能夠提供以下優(yōu)點(diǎn): 您和團(tuán)隊(duì)成員伙伴能夠彼此獨(dú)立地使用網(wǎng)絡(luò)應(yīng)用軟件的不同(本地)實(shí)例進(jìn)
28、行開(kāi)發(fā)。 能夠同時(shí)開(kāi)發(fā)和調(diào)試應(yīng)用軟件,避免在不經(jīng)意中干擾了其它成員的工作。 它提供了對(duì)源碼控制的高級(jí)支持(與使用FrontPageT展名的不隔離模型相比)。 它在一個(gè)局域網(wǎng)(LAN )環(huán)境中能略為快速地運(yùn)行(與FrontPage擴(kuò)展名相比)。避免采用半隔離和不隔離開(kāi)發(fā)模型在團(tuán)隊(duì)開(kāi)發(fā)環(huán)境中使用半隔離和不隔離模型是困難的。這些應(yīng)該盡可能避免使用。使用半隔離和不隔離模型的缺點(diǎn)使用半隔離和不隔離模型有著以下缺點(diǎn): 非常容易在無(wú)意間干擾其它開(kāi)發(fā)人員。例如,在調(diào)試一個(gè)應(yīng)用軟件時(shí),調(diào)試進(jìn)程將鎖定公共服務(wù)器,因此會(huì)對(duì)團(tuán)隊(duì)的其它成員造成影響。 在一個(gè)不隔離模型中,開(kāi)發(fā)人員也能互相影響,因?yàn)槊總€(gè)網(wǎng)絡(luò)應(yīng)用軟件中動(dòng)態(tài)
29、連接庫(kù)的背后只存在一個(gè)唯一的代碼。 FrontPage擴(kuò)展名(沒(méi)有VSS集成)僅提供有限的源碼控制能力。使用不隔離開(kāi)發(fā)模型。所有的開(kāi)發(fā)人員使用同一個(gè)位于 Web服務(wù)器上的主拷貝。FrontPageT展名的源碼控制能 力提供了一個(gè)“最后登記的有效”的開(kāi)發(fā)模型。如果用戶(hù)A和B同時(shí)調(diào)出相同的文件,用戶(hù)A作出改變并加以存儲(chǔ), 接著用戶(hù)B也存儲(chǔ)所作的變化,那么用戶(hù)A所作的更改就會(huì) 丟失。一個(gè)不得不采用半隔離模型和不隔離模型的場(chǎng)合是,您的網(wǎng)絡(luò)應(yīng)用軟件所需的特定資源只能通過(guò)公共Web服務(wù)器取得。您在使用微軟 .NET通行證進(jìn)行開(kāi)發(fā)時(shí)可能會(huì)遇到這樣的情形。如果不得不采用FrontPageF展名,可以配置 Vi
30、sual Studio .NET在所有新的網(wǎng)絡(luò)項(xiàng)目中都使 用這個(gè)操作模式,并且能夠在現(xiàn)有的網(wǎng)絡(luò)項(xiàng)目中改變這個(gè)模式。配置 Visual Studio .NET 以使用 FrontPageT展名1 .在Tools菜單上,點(diǎn)擊Options。2 .點(diǎn)擊項(xiàng)目文件夾。3 .在項(xiàng)目文件夾中,點(diǎn)擊 Web Settings.4 .在右邊的面板當(dāng)中,選擇 FrontPage Extensions項(xiàng)。5 .點(diǎn)擊OK接受改變。要改變現(xiàn)有網(wǎng)絡(luò)項(xiàng)目的訪問(wèn)模式1 .在解決方案瀏覽器里右擊項(xiàng)目,然后點(diǎn)擊Properties o2 .展開(kāi)公共屬性文件夾,然后點(diǎn)擊Web Settings o3 .改變 Web Access
31、Mode 設(shè)置項(xiàng)。4 .點(diǎn)擊OK接受改變。更多信息關(guān)于在Visual Studio.NET中開(kāi)發(fā)源碼控制網(wǎng)絡(luò)項(xiàng)目的更多信息,請(qǐng)參閱 nInVisualStudioNET.asp , “Visual Studio.NET 中的網(wǎng)絡(luò)項(xiàng)目和源碼控制集成”。第三章構(gòu)造解決方案和項(xiàng)目為了保證開(kāi)發(fā)和構(gòu)建過(guò)程能夠在一個(gè)團(tuán)隊(duì)環(huán)境中有效進(jìn)行,最重要的是以一個(gè)正確的項(xiàng)目 結(jié)構(gòu)為開(kāi)端,該結(jié)構(gòu)在您所有的開(kāi)發(fā)工作站和編譯連接服務(wù)器上都是統(tǒng)一的。本章節(jié)提供以下方面的指導(dǎo): 劃分微軟Visual Studio .NET解決方案和項(xiàng)目。 管理本地文件系統(tǒng)和微軟 Visual SourceSafe (VSS)文件夾結(jié)構(gòu)。 對(duì)于
32、項(xiàng)目、組件和域名空間采用一定的命名規(guī)則。Visual Studio .NET 解決方案和項(xiàng)目在討論如何組織Visual Studio .NET解決方案和項(xiàng)目之前,非常重要的事情是需要了解它們 的基本原理并且懂得它們是如何為本地以及源碼控制提供者一一通常是VSS所管理的。如果已經(jīng)熟悉Visual Studio .NET中的解決方案和項(xiàng)目,并且了解組成一個(gè)項(xiàng)目的各種文件 類(lèi)型,那么可以跳過(guò)本節(jié),直接閱讀“始終使用Visual Studio .NET進(jìn)行源碼控制操作”。Visual Studio .NET 項(xiàng)目Visual Studio .NET使用項(xiàng)目文件作為所有編譯連接和配置設(shè)置項(xiàng)的容納體,這些
33、設(shè)置項(xiàng)被用來(lái)生成一個(gè).NET組件。項(xiàng)目文件的文件擴(kuò)展名是.csproj或者.vbproj ,取決于項(xiàng)目使用的語(yǔ)言。存在著許多不同的項(xiàng)目類(lèi)型以及相關(guān)的快速應(yīng)用開(kāi)發(fā)(RAD)模板,盡管這些項(xiàng)目類(lèi)型能夠大體上被分成兩類(lèi)。這兩種文件類(lèi)型是: 網(wǎng)絡(luò)項(xiàng)目。一個(gè)網(wǎng)絡(luò)項(xiàng)目是使用超文本傳輸協(xié)議( HTTP)地址創(chuàng)建的項(xiàng)目(例如: http:/localhost/MyWebProject )。網(wǎng)絡(luò)項(xiàng)目包括用于向網(wǎng)絡(luò)瀏覽器傳送內(nèi)容的ASP.NET網(wǎng)絡(luò)應(yīng)用軟件和主要用于Internet上的數(shù)據(jù)集成的ASP.NET網(wǎng)絡(luò)服務(wù)。 非網(wǎng)絡(luò)或本地項(xiàng)目。非網(wǎng)絡(luò)或本地項(xiàng)目是使用文件系統(tǒng)地址創(chuàng)建的項(xiàng)目(例如,C:ProjectsMy
34、SystemMySolutionMyWinProject )。最普遍的本地項(xiàng)目類(lèi)型是Windows應(yīng)用軟件和類(lèi)庫(kù),盡管也有許多其它的類(lèi)型,包括服務(wù)、控制臺(tái)應(yīng)用軟件、數(shù)據(jù)庫(kù)項(xiàng)目Visual Studio .NET 解決方案解決方案文件(有.sln的擴(kuò)展文件名)被用來(lái)將相關(guān)項(xiàng)目組合在一起,并主要是被用來(lái)控制 編譯連接過(guò)程。您能夠使用解決方案去控制編譯連接的依存關(guān)系問(wèn)題,并且控制所包含的項(xiàng)目 被編譯連接的精確順序。重要提示:一個(gè)項(xiàng)目可以是一個(gè)或多個(gè)解決方案的組成部分,但是一個(gè)解決方案不能被包括在其它解決方 案當(dāng)中。圖3.1說(shuō)明了項(xiàng)目和解決方案之間白關(guān)系,同時(shí)也指出了VSS用于維護(hù)解決方案和項(xiàng)目層次的
35、設(shè)置項(xiàng)的文件類(lèi)型。Proji nctA. cs-p roj jui e>o-f .vbpF'OJ.u«erProji sctB .cs-p rcaj ju s'a-r .vbprQj.ui»rProjectC ,csp roj ru ser xVbpraj.us«rLJ k o rIF Hilo(Not Vers.loinCcritrdled)A pp Nm«. su。Non-LJisa-r %poci”匚 Filo(Vers Controll«i>A ppNameElHiProjoctA ,ic:!E proj.v
36、bproiProjcrctO _c-3prc»jProj4>:tC 丁二隼 p roj .vbproi圖3.1 Visual Studio .NET項(xiàng)目和解決方案解決方案和編譯連接依存關(guān)系解決方案文件也包含了編譯連接過(guò)程所使用的項(xiàng)目依存關(guān)系信息。例如,在前面的圖中,依存關(guān)系信息出項(xiàng)目 A依賴(lài)于項(xiàng)目B,并且項(xiàng)目B依賴(lài)于項(xiàng)目Co因此,構(gòu)建的順序一定先是 項(xiàng)目C,然后是項(xiàng)目B,最后才是項(xiàng)目A。當(dāng)項(xiàng)目引用用于一個(gè)單個(gè)的解決方案時(shí),VisualStudio .NET能夠確保正確的編譯連接順序。重要提示:存在兩種基本 類(lèi)型的引用項(xiàng)目引用和文件應(yīng)用。您可以在 Visual Studio .N
37、ET的AddReference謝話(huà)框中設(shè)置這兩種引用。因?yàn)轫?xiàng)目引用同時(shí)也建立編譯連接順序的依存關(guān)系,因此您也應(yīng)當(dāng)盡可能使用項(xiàng)目連接。關(guān)于更多的信息,請(qǐng)參閱第四章一一“管理依存關(guān)系”中的“引用組件”。服從源碼控制的文件以下的列表列出一些關(guān)鍵的文件類(lèi)型。當(dāng)一個(gè)解決方案在Visual Studio .NET集成開(kāi)發(fā)環(huán)境(IDE)中被添加到源碼控制中時(shí),這些文件類(lèi)型能夠自動(dòng)添加到VSS中。 解決方案文件(*.sln)。這些文件中所維護(hù)的關(guān)鍵條目包括了一個(gè)組成項(xiàng)目、依存關(guān)系 信息、編譯連接配置細(xì)節(jié)信息以及源碼控制提供者細(xì)節(jié)的列表。 項(xiàng)目文件(*.csproj or *.vbproj )。這些文件中維護(hù)的
38、關(guān)鍵條目包括組件編譯連接設(shè)置 項(xiàng)、引用的組件(通過(guò)名字和路徑)以及一個(gè)文件清單。 應(yīng)用軟件配置文件。這些是基于可擴(kuò)展置標(biāo)語(yǔ)言( XML )的配置文件,用于控制項(xiàng)目運(yùn)行期行為的不同側(cè)面。注意:對(duì)于網(wǎng)絡(luò)應(yīng)用軟件,源碼控制配置文件被稱(chēng)為Web.config。對(duì)于非網(wǎng)絡(luò)應(yīng)用軟件,源碼控制文件被稱(chēng)為app.config,并且被包含在項(xiàng)目文件夾里。在運(yùn)行期間,Visual Studio .NET編譯連接系統(tǒng)將app.config文件拷貝到Bin文件夾,并且將其重命名為 Yourappname.exe.config。對(duì)于非網(wǎng)絡(luò)應(yīng)用軟件,一個(gè)配置文件是不會(huì)自動(dòng)添加到一個(gè)新的項(xiàng)目當(dāng)中的。如果您需要一個(gè)配置文件,
39、就請(qǐng)手動(dòng)加入。請(qǐng)確保它的文件名叫作app.config,并且將它放置到項(xiàng)目文件夾里。 源文件(*.cs、*.vb、*.aspx、*.asax、*.resx、*.vsdisco、*.cs*等)。 所有的項(xiàng)目源文 件服從源碼控制。不服從源碼控制的文件以下的文件不能添加到源碼控制中,因?yàn)樗鼈兪轻槍?duì)開(kāi)發(fā)人員的: 解決方案用戶(hù)選項(xiàng)文件(*.suo)。這些文件包括單個(gè)開(kāi)發(fā)人員對(duì)集成開(kāi)發(fā)環(huán)境所作的 私人化的定制。 項(xiàng)目用戶(hù)選項(xiàng)文件(*.csproj.user or *.vbproj.user )。這些文件包括開(kāi)發(fā)人員特定的項(xiàng) 目選項(xiàng)和一個(gè)可選的集成開(kāi)發(fā)環(huán)境用來(lái)定位被引用組件的引用路徑。第四章一一“管理依存關(guān)
40、系”中的“引用組件” 一節(jié)解釋了組件引用應(yīng)該在一個(gè)團(tuán)隊(duì)環(huán)境中得到管理。 網(wǎng)絡(luò)信息文件(*.csproj.webinfo or *.vbproj.webinfo )。這個(gè)文件跟蹤記錄一個(gè)項(xiàng)目的虛擬根區(qū)位置。這個(gè)文件不能添加到源碼控制中,以便允許單個(gè)開(kāi)發(fā)人員為他們各自的項(xiàng)目工作拷貝指定不同的虛擬根區(qū)。當(dāng)這個(gè)能力存在的時(shí)候,您和所有的團(tuán)隊(duì)成員在開(kāi)發(fā)網(wǎng)絡(luò)應(yīng)用軟件時(shí)建議使用一個(gè)統(tǒng)一的(本地)虛擬根區(qū)位置。關(guān)于網(wǎng)絡(luò)和非網(wǎng)絡(luò)應(yīng)用軟件的推薦結(jié)構(gòu)的進(jìn)一步討論,可以參閱“在解決方案和項(xiàng)目中使用一個(gè)統(tǒng)一的文件夾結(jié)構(gòu)” 一節(jié)。 編譯連接輸出包括組件的動(dòng)態(tài)連接庫(kù)( DLLs )、Interop組件動(dòng)態(tài)連接庫(kù)和可執(zhí)行文件
41、。 然而,最好將項(xiàng)目引用的外部系統(tǒng)組件添加到VSS中,這些組件不作為系統(tǒng)的編譯連接過(guò)程的一部分進(jìn)行編譯連接(例如第三方控件和庫(kù)文件)。關(guān)于細(xì)節(jié),請(qǐng)參閱第四章一 “管理依存關(guān)系”中的“在項(xiàng)目中包含外部系統(tǒng)組件”。始終使用Visual Studio .NET作源碼控制操作VSS中所有項(xiàng)目的創(chuàng)建和操作應(yīng)當(dāng)使用Visual Studio .NET中集成的VSS support菜單進(jìn)行一一而不要使用VSS瀏覽器。Visual Studio .NET的功能保證: 只將適當(dāng)?shù)奈募砑拥皆创a控制中。 您的Visual Studio .NET項(xiàng)目和解決方案文件被適當(dāng)?shù)腣SS特定細(xì)節(jié)所更新。例如,VisualSt
42、udio .NET中的VSS功能在以下幾個(gè)方面更新解決方案文件( .sln)文件:1 .在一個(gè)解決方案當(dāng)中,處于源碼控制下的項(xiàng)目的個(gè)數(shù)(這個(gè)數(shù)目包括解決方案文件本 身)。2 .每個(gè)項(xiàng)目的VSS服務(wù)器。3 .每個(gè)項(xiàng)目在服務(wù)器上的存放位置。4 .每個(gè)項(xiàng)目的源代碼控制提供者的名稱(chēng)。5 .每個(gè)項(xiàng)目相對(duì)于解決方案文件的存放位置。包含在解決方案用戶(hù)文件(.suo)和項(xiàng)目文件(.csproj or .vbproj)中的其它文件也得到了更 新。重要提示:應(yīng)當(dāng)始終通過(guò)Visual Studio .NET接口而不是VSS瀏覽器與VSS進(jìn)行交互。產(chǎn)品的緊密集成確保 文件在一個(gè)團(tuán)隊(duì)環(huán)境中能夠得到正確的管理。劃分解決方
43、案和項(xiàng)目用于劃分解決方案和項(xiàng)目的方法將極大地影響您在團(tuán)隊(duì)環(huán)境中的開(kāi)發(fā)成效和編譯連接過(guò) 程。有三種模型可考慮用來(lái)劃分解決方案和項(xiàng)目:1 .單解決方案2 .分塊單解決方案3 .多解決方案重要提示:除非您有非常好的理由要使用一個(gè)多解決方案模型,否則請(qǐng)盡量避免使用,而應(yīng)當(dāng)采用一個(gè)單 解決方案模型?;蛘咴谳^大的系統(tǒng)中,您可以考慮采用分塊單解決方案模型。后兩者與多解決方案模型相比比 較容易使用,而且提供了許多重要的優(yōu)點(diǎn),這在以后的章節(jié)中會(huì)有進(jìn)一步的討論。盡可能使用單解決方案模型使用單解決方案模型,可以創(chuàng)建一個(gè)單一的Visual Studio .NET解決方案,并且將其用作您的應(yīng)用軟件所定義的所有項(xiàng)目的容納
44、體。當(dāng)使用一個(gè)單一解決方案模型時(shí),請(qǐng)遵循以下幾點(diǎn): 如果一個(gè)項(xiàng)目需要引用另外一個(gè)項(xiàng)目生成的組件,請(qǐng)使用項(xiàng)目引用。 文件引用只在引用外部系統(tǒng)組件(例如.NET框架組件和第三方組件)時(shí)使用,這些組件不會(huì)被編譯連接到您的系統(tǒng)的剩余部分當(dāng)中。圖3.2單解決方案模型應(yīng)當(dāng)盡可能使用單解決方案模型,因?yàn)樗芴峁┰S多重大的優(yōu)點(diǎn)。優(yōu)點(diǎn)單解決方案模型提供了以下優(yōu)點(diǎn): 當(dāng)需要引用由一個(gè)獨(dú)立項(xiàng)目生成的其它組件時(shí),可以使用項(xiàng)目引用。 項(xiàng)目引用是對(duì)其它組件進(jìn)行引用的首先方式,它確保這些組件能在團(tuán)隊(duì)環(huán)境中的所有開(kāi)發(fā)工作站上工作。項(xiàng)目引用的眾多優(yōu)點(diǎn)和關(guān)于何時(shí)使用文件引用的討論請(qǐng)參見(jiàn)第四章一一“管理依存關(guān) 系”中的“引用組件”
45、。 避免了組件版本問(wèn)題, 因?yàn)閂isual Studio .NET能夠檢測(cè)在何時(shí)引用組件的客戶(hù)需要重新 編譯連接。 項(xiàng)目引用對(duì)被引用的項(xiàng)目的配置變化非常敏感。這意味著您能夠在項(xiàng)目中自動(dòng)從調(diào)試編譯連接切換到發(fā)布編譯連接,而無(wú)需重新設(shè)置引用。 系統(tǒng)編譯連接過(guò)程和編譯連接腳本變得更加簡(jiǎn)單。缺點(diǎn)應(yīng)當(dāng)盡可能地采用單解決方案模型,然而:您就不得不獲得這 模型的伸縮性有限。如果您想在解決方案中的某個(gè)項(xiàng)目上開(kāi)展工作, 個(gè)解決方案中所有項(xiàng)目的源代碼。 即使是對(duì)單個(gè)項(xiàng)目中的單個(gè)源文件所作的最小改變都將導(dǎo)致這個(gè)解決方案中的許多項(xiàng)目必須根據(jù)項(xiàng)目間的依存關(guān)系重新進(jìn)行編譯連接。 如果一個(gè)被引用的項(xiàng)目的組件接口發(fā) 生了變化
46、,您將必須重新編譯連接客戶(hù)項(xiàng)目。 然而,不必要的重新編譯連接工作將會(huì)非 常浪費(fèi)時(shí)間,尤其是對(duì)于包含了許多項(xiàng)目的解決方案而言。對(duì)于較大的系統(tǒng),考慮使用分塊單解決方案模型對(duì)于較大的系統(tǒng),如果想減少每個(gè)開(kāi)發(fā)工作站所需要的項(xiàng)目和源文件的數(shù)量,可以考慮將 一些彼此獨(dú)立的解決方案文件中的相關(guān)項(xiàng)目組合在一起。這允許您和開(kāi)發(fā)成員伙伴在內(nèi)部系統(tǒng) 邊界以?xún)?nèi)針對(duì)一些獨(dú)立的、較小的子系統(tǒng)分別開(kāi)展工作。注意:一個(gè)單一的項(xiàng)目文件能夠包含在一個(gè)或多個(gè)解決方案文件中,但是解決方案不能包含在另外的解決 方案當(dāng)中。圖3.3分塊單解決方案模型圖3.3例示了分塊單模型解決方案。請(qǐng)注意如何使用獨(dú)立解決方案的文件,以便使您可以工 作在內(nèi)
47、部系統(tǒng)邊界以?xún)?nèi)的較小的子系統(tǒng)上。同時(shí)還要注意這樣的操作如何導(dǎo)致項(xiàng)目被包含在多 于一個(gè)的解決方案文件當(dāng)中。例如,項(xiàng)目D和H總共位于包括主解決方案在內(nèi)的三個(gè)解決方案文件當(dāng)中。在分塊單模型解決方案中: 所有的項(xiàng)目包含在一個(gè)主解決方案當(dāng)中。這被系統(tǒng)編譯連接過(guò)程用來(lái)重新編譯連接整個(gè)系統(tǒng)。如果需要工作在項(xiàng)目文件的頂層,那么也需要工作在主解決方案的層次上。 項(xiàng)目引用在單個(gè)項(xiàng)目之間使用。 獨(dú)立解決方案文件為選定的項(xiàng)目文件所引入。如果愿意,可以為系統(tǒng)中的每一個(gè)項(xiàng)目引入一個(gè)解決方案文件。 每個(gè)解決方案文件包含了主項(xiàng)目文件、它所依賴(lài)的任何下位項(xiàng)目以及在依存關(guān)系鏈表中它所依賴(lài)的更多項(xiàng)目。 獨(dú)立的解決方案文件允許您工作
48、在整個(gè)系統(tǒng)內(nèi)部的較小的子系統(tǒng)上,但是保留了項(xiàng)目引用的重大好處。在每一個(gè)解決方案文件當(dāng)中,項(xiàng)目引用被用于方案的組成項(xiàng)目當(dāng)中。注意:您不應(yīng)該將兩個(gè)互相引用的項(xiàng)目分割到不同的解決方案當(dāng)中,因?yàn)檫@將使得文件引用的使用變得必 要,而文件引用是應(yīng)當(dāng)盡可能避免的。關(guān)于更多信息,請(qǐng)參閱第四章一一“管理依存關(guān)系”中的“引用組件”。優(yōu)點(diǎn)分塊單解決方案模型提供了以下一些優(yōu)勢(shì): 能夠工作在小的子系統(tǒng)上。不需要在每一個(gè)開(kāi)發(fā)工作站上都擁有整個(gè)系統(tǒng)的源代碼和項(xiàng) 目文件。因此,Visual Studio .NET中的解決方案瀏覽器變得不再混亂并且容易使用。 能夠在每個(gè)解決方案當(dāng)中使用項(xiàng)目引用。 主解決方案允許您更容易地重新編
49、譯連接整個(gè)系統(tǒng)。主解決方案文件可為編譯連接服務(wù)器上的編譯連接過(guò)程所使用。缺點(diǎn)分塊單解決方案模型也存在以下一些缺點(diǎn): 當(dāng)添加新的項(xiàng)目時(shí),必須潛在地添加它們并且在多個(gè)解決方案文件中更新所有的項(xiàng)目引 用;例如,主解決方案文件和一個(gè)或多個(gè)其它的解決方案文件。 會(huì)被劃分系統(tǒng)的方式所限定。這是受項(xiàng)目依存關(guān)系所決定的。因此,如果工作在頂層項(xiàng)目當(dāng)中,例如,表達(dá)層中的一個(gè)ASP.NET網(wǎng)絡(luò)應(yīng)用軟件,不得不把所有相關(guān)的項(xiàng)目拷貝 到開(kāi)發(fā)工作站上。 這就可能包含了您的企業(yè)和數(shù)據(jù)層次的項(xiàng)目。另外,如果工作在類(lèi)庫(kù)或者是數(shù)據(jù)訪問(wèn)組件的開(kāi)發(fā)過(guò)程中,僅僅需要那些單個(gè)的項(xiàng)目。僅在絕對(duì)必要的情況下使用多解決方案模型多解決方案模型類(lèi)
50、似于分塊單解決方案模型,除了以下不同: 不存在主解決方案文件。 文件引用使用在獨(dú)立解決方案的項(xiàng)目之間(盡管項(xiàng)目引用仍然用于單個(gè)解決方案的項(xiàng)目之間)。 運(yùn)行在編譯連接服務(wù)器上的系統(tǒng)編譯連接腳本基于已知的依存關(guān)系依次編譯連接每個(gè)解決方案。編譯連接腳本將輸出組件放置在編譯連接服務(wù)器上的一個(gè)固定位置上。多解決方案模型如圖3.4所示。圖3.4多解決方案模型優(yōu)點(diǎn)多解決方案模型提供了一些分塊單解決方案模型所不具備的優(yōu)點(diǎn): 每個(gè)項(xiàng)目?jī)H僅包含在一個(gè)單一的解決方案當(dāng)中。這意味著從系統(tǒng)中增加和刪除項(xiàng)目變得更加容易。 能夠?qū)⑾到y(tǒng)基于邏輯界線細(xì)分為多個(gè)解決方案,并且不再受到項(xiàng)目依存關(guān)系的驅(qū)使。例如,可以基于企業(yè)功能的不
51、同區(qū)域作出劃分。缺點(diǎn)多解決方案有以下一些缺點(diǎn): 當(dāng)需要引用一個(gè)由另一個(gè)獨(dú)立解決方案所產(chǎn)生的組件時(shí),將不得不使用文件引用。 文件引用(不像項(xiàng)目應(yīng)用) 不會(huì)自動(dòng)建立編譯連接依存關(guān)系。這就意味著必須在系統(tǒng)編譯連接腳本中解決關(guān)于解決方案的編譯連接順序問(wèn)題。雖然這是可以被管理的, 但是它增加了編譯連接過(guò)程的復(fù)雜性。 也不得不引用一個(gè)動(dòng)態(tài)連接庫(kù)( DLL )的特定配置的編譯連接結(jié)果(例如,發(fā)布或是調(diào) 試版本)。項(xiàng)目引用能對(duì)其進(jìn)行自動(dòng)管理并且在Visual Studio .NET中引用當(dāng)前激活的配置。 當(dāng)工作在單個(gè)解決方案當(dāng)中時(shí),您能夠得到其它團(tuán)隊(duì)成員開(kāi)發(fā)的最新代碼(或許在其它項(xiàng)目當(dāng)中),以進(jìn)行本地集成測(cè)試
52、。能保證在將自己的代碼登記到VSS當(dāng)中,準(zhǔn)備下一次系統(tǒng)編譯連接之前,一切都不會(huì)出現(xiàn)問(wèn)題。在一個(gè)多解決方案系統(tǒng)中,這樣做要困難 得多,因您僅僅能夠在使用以前的系統(tǒng)編譯連接結(jié)果的前提下測(cè)試您的解決方案。您應(yīng)當(dāng)能夠很容易地在一個(gè)包含 10、20甚至是30個(gè)項(xiàng)目的系統(tǒng)中使用單解決方案。一個(gè)解決方案中,最大的可工作項(xiàng)目的數(shù)量很難得到精確的定義,因?yàn)樗蕾?lài)于特定的編譯連接服務(wù)器和開(kāi)發(fā)工作站,以及和單個(gè)項(xiàng)目有關(guān)的源文件的數(shù)量和大小??紤]將項(xiàng)目組合成解決方案解決將項(xiàng)目組合成解決方案的問(wèn)題的最好方法是考慮您的應(yīng)用軟件的總體結(jié)構(gòu)。例如: 從確定系統(tǒng)中的組成部件 (或是組件)開(kāi)始;這就定義了系統(tǒng)所要求的單個(gè)項(xiàng)目。記
53、住,每一個(gè)組件都是由一個(gè)單獨(dú)的 Visual Studio .NET項(xiàng)目生成的。 瞄準(zhǔn)單解決方案模型。 如果想通過(guò)分割項(xiàng)目來(lái)提供更高層次的分散性和控制,可以使用分塊單解決方案模型。 考慮一下哪個(gè)組的項(xiàng)目是您想進(jìn)行隔離工作的,例如,一組中間層次的商業(yè)組件,以及依靠這些組件創(chuàng)建的獨(dú)立的解決方案。如果將項(xiàng)目分割成了多個(gè)解決方案,并且利用分塊單解決方案模型無(wú)法這樣做時(shí),請(qǐng)仔細(xì) 考慮一下跨解決方案的依存關(guān)系,以及分隔開(kāi)兩個(gè)獨(dú)立組件的接口的本質(zhì)。當(dāng)您將項(xiàng)目組織成 獨(dú)立的解決方案時(shí),應(yīng)當(dāng): 確定分隔系統(tǒng)的各個(gè)組成部分的外部接口。盡量去確定那些最不可能發(fā)生變化的接口。 如果一個(gè)項(xiàng)目的外部接口經(jīng)常發(fā)生變化,那么
54、任意一個(gè)獨(dú)立的項(xiàng)目在理論上都應(yīng)當(dāng)放置到同一個(gè)解決方案當(dāng)中。 如果正在使用網(wǎng)絡(luò)服務(wù),以便將系統(tǒng)中的一些組件連接在一起,網(wǎng)絡(luò)服務(wù)接口就提供了一個(gè)良好的分界線。 例如,網(wǎng)絡(luò)服務(wù)接口的客戶(hù)端項(xiàng)目和服務(wù)器端項(xiàng)目可能成為獨(dú)立解 決方案的一部分。在解決方案和項(xiàng)目中使用一個(gè)統(tǒng)一的文件夾結(jié)構(gòu)如果使用一個(gè)通用的結(jié)構(gòu)用于存儲(chǔ)Visual Studio .NET的解決方案和項(xiàng)目的話(huà),在團(tuán)隊(duì)開(kāi)發(fā)環(huán)境中進(jìn)行的工作在整體上要變得容易得多。為了保持事物的對(duì)稱(chēng)性(這樣做的結(jié)果是變得更 簡(jiǎn)單),請(qǐng)?jiān)赩SS中設(shè)置一個(gè)與您的本地文件系統(tǒng)結(jié)構(gòu)相匹配的文件夾結(jié)構(gòu)。定義一個(gè)通用的根文件夾在VSS中定義一個(gè)通用的根文件夾一一仞如,在您的文件系統(tǒng)中是C:Projects,在VSS中是$/Projects。這將作為所有開(kāi)發(fā)系統(tǒng)的容納體。在這個(gè)通用的根文件夾下,分別為每一個(gè)系統(tǒng)建 立一個(gè)系統(tǒng)根文件夾例如, C:ProjectsMyCompanysInsuranceApp 和 $/Projects/MyCompanysInsuranceApp 。在解決方案和項(xiàng)目中采用“父-子”文件夾結(jié)構(gòu)應(yīng)當(dāng)在解決方案和項(xiàng)目中采用一個(gè)“父-子”文件夾結(jié)構(gòu)。作到以下幾點(diǎn): 在系統(tǒng)根文件夾底下為您的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社工服務(wù)項(xiàng)目合同
- 工程承包和項(xiàng)目咨詢(xún)合同
- 工業(yè)廠房買(mǎi)賣(mài)合同協(xié)議書(shū)
- 民間借貸擔(dān)保人合同
- 0 的認(rèn)識(shí)與加減法(教學(xué)設(shè)計(jì))2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)人教版
- 《12 晝與夜》作業(yè)設(shè)計(jì)方案-2024-2025學(xué)年二年級(jí)上冊(cè)科學(xué)教學(xué)設(shè)計(jì) 粵教粵科版
- 綏化學(xué)院《外科學(xué)總論》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連海洋大學(xué)《工程力學(xué)及機(jī)械設(shè)計(jì)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 銅陵學(xué)院《國(guó)際貿(mào)易綜合實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧夏工業(yè)職業(yè)學(xué)院《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2022年二年級(jí)語(yǔ)文下冊(cè)二類(lèi)字注音新人教版
- 高速公路聲屏障項(xiàng)目施工組織設(shè)計(jì)
- 2022年期貨基礎(chǔ)知識(shí)培訓(xùn)資料
- 《-鈍感力》渡邊淳一-讀書(shū)分享ppt
- T∕CAMDI 009.1-2020 無(wú)菌醫(yī)療器械初包裝潔凈度 第1部分:微粒污染試驗(yàn)方法 氣體吹脫法
- 醫(yī)院門(mén)診掛號(hào)收費(fèi)系統(tǒng)操作要點(diǎn)
- 國(guó)家農(nóng)產(chǎn)品質(zhì)量安全監(jiān)督抽查抽樣單
- 聘書(shū)模板可編輯
- 離心式壓縮機(jī)功率公式
- 參保人員就醫(yī)流程doc
- 2019湘美版五年級(jí)《書(shū)法練習(xí)指導(dǎo)》下冊(cè)教案
評(píng)論
0/150
提交評(píng)論