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