摘要:本文為在 Visual Studio .NET 中開發源代碼治理的 Web 項目提供了策略。 簡介 任何一個人都不可能把握快速而連貫地創建一流水平的軟件應用程序所需的全部語言、技術、工具和方法,因此,大多數專業開發人員都以團隊的形式合作進行開發。這也是效率和經濟效益所需要的。同樣,大多數軟件開發團隊采用并行開發方法,這樣就可以將單個開發人員從“串行開發”的束縛中解脫出來;所謂串行開發,即只有當一位開發人員完成任務后,下一位開發人員才能開始工作。“并行開發”答應多個開發人員同時“隔離”地工作,以穩妥的方式開發某個項目的相同或不同的部分和版本。要發揮并行開發的優勢,團隊必須實現進程化,以便項目開發人員能夠在小沖突變成大沖突之前,迅速、逐步及自動地(某些情況下)對其進行解決。通過確保足夠的開發隔離度,Visual Studio .NET 可以提高團隊的協作能力。隔離工作時,兩個或多個開發人員可以進行有沖突地更改,并確保至少有一名團隊成員有機會對各個沖突點進行審閱并選擇合適的方案。與以前發布的 Microsoft 開發工具所不同的是,Visual Studio .NET 現在支持 Web 和非 Web 項目的真正隔離開發。本文提供了以團隊方式順利開發 asp.net Web 項目的策略,介紹了 Web 項目文件治理,以便您更方便地了解如何以團隊的形式設置、開發和部署源代碼治理的 Web 應用程序。一個可靠的協作開發策略由以下因素組成:
源代碼治理
程序的一致性
隔離性
要確保協作成功,其中最簡單的方法就是使用源代碼治理解決方案、項目和其他共享資源。源代碼治理可以保護團隊資源不會被意外刪除,保護單個開發人員的更改不會被盲目或無意覆蓋,還可以按版本維護所有項目文件的歷史記錄。Visual Studio .NET 使源代碼治理成為項目文件治理的擴展,從而降低了源代碼治理的復雜性。您無需離開集成開發環境 (IDE) 或者打開另一個應用程序,即可實現所有源代碼治理操作。了解解決方案和項目 Visual Studio 減少了項目文件治理和源代碼治理中許多單調而復雜的操作。例如,當您在項目中添加新項時,Visual Studio 可以將其保存在存儲區中的某個位置。只要文件是打開的并且按要求與項目編譯在一起,就無需您來確定文件的保存位置。而在開發 Web 應用程序時,了解 Visual Studio .NET 如何在后臺治理項目文件,可以為您和您的團隊節省大量時間和金錢。解決方案 無論何時從存儲區中創建 Web 項目或打開現有的 Web 項目,系統都將自動創建包含該項目的解決方案。所有 Visual Studio .NET 解決方案都包含一個解決方案文件 solutionname.sln,它存儲解決方案元數據,例如項目列表及其在存儲區中的位置。解決方案包含另一個解決方案文件 solutionname.suo,它跟蹤用戶特定的信息,例如 Visual Studio 項目的默認保存位置。將解決方案添加到源代碼治理時,將只添加 *.sln 文件。而且,從始至終都不會簽入 *.suo 文件。從源代碼治理的角度而言,以下兩個關于解決方案的重要事項值得注重。
解決方案是本地的。解決方案和 Web 項目文件存儲在不同的位置。與 Web 項目的文件項不同,解決方案文件永遠不會存儲在 Web 服務器上,除非您刻意將其存放在 Web 服務器上(建議您不要這樣做)。Web 項目文件(.vbPRoj 和 .csproj)駐留在 Web 服務器上,而解決方案文件(.sln 和 .suo)以及 Solution Items(解決方案項)文件夾中的所有文件項在默認情況下都存儲在文件系統文件夾中。這一點非常重要,因為它會影響源代碼治理的 Web 項目的結構和可治理性。
項目 在治理文件方面,Visual Studio .NET 只包含兩類項目:Web 和非 Web 項目(即本地項目)。
Web 項目
在 New Project(新建項目)對話框的 HTTP 位置創建的所有項目。這些項目主要用于向 Web 瀏覽器(即被稱為 Web 應用程序的項目)提供內容,還可以在開發人員需要在服務器 (Web Services) 之間共享數據時使用。
本地項目
在非 HTTP 位置創建的所有項目(例如,C:/MyProjects 或 //MyComputer/MyProjects)。最常見的本地項目用于創建 Windows 應用程序。
與解決方案文件 *.sln 一樣,所有項目都包含一個項目文件,用于標識其各項在計算機文件系統中的物理位置。例如,當您向 Visual Basic ASP.NET 項目添加文本文件時,其相對路徑將被插入到項目文件 (*.vbproj) 中。Web 項目 ASP.NET Web 項目是一種快速應用程序開發 (RAD) 模板,適用于基于 Web 的瘦客戶機應用程序。在 ASP.NET Web 應用程序中,Web 窗體頁通過瀏覽器向用戶提供信息,并使用服務器代碼實現應用程序邏輯。Web 應用程序是圍繞 ASP.NET 建立的,ASP.NET 是一個平臺,包含在 Web 服務器上開發和運行應用程序所需的設計時對象和控件以及運行時執行環境。治理源代碼治理下的 Web 項目時,需要注重以下事項:
使用 Visual Studio .NET 執行所有可用的源代碼治理操作。
不要以手動方式對文件強制進行源代碼治理。使用 Add to Source Control(添加到源代碼治理)或 Check In(簽入)命令時,所有應由源代碼治理的文件都將自動被存放在那里。
訪問方法 Visual Studio 通過以下兩種方法之一訪問和治理 Web 服務器上的文件:文件共享,這是 Visual Studio .NET 中的新功能;或 FrontPage,它已經在 Visual InterDev 中使用。默認情況下,使用新增的文件共享訪問方法。
文件共享
Visual Studio 使用基于 Windows 的文件治理命令訪問 Web 項目文件。文件共享是默認的 Web 訪問方法,它為源代碼治理提供良好的支持。
FrontPage
所有文件都使用 HTTP 協議進行治理。來自 Visual Studio 的源代碼治理請求通過 FrontPage Server Extensions 被轉發到源代碼治理提供程序(例如 Visual SourceSafe)的服務器安裝。FrontPage 訪問方法支持的源代碼治理命令比文件共享訪問方法支持的命令要少。
項目文件 與本地項目不同,Web 項目不能包含其項目目錄以外的文件項。將現有文件添加到 Web 項目時,Visual Studio 通過將文件復制到 virtual application root(虛擬應用程序根,Web 服務器上的一個目錄,所有項目項和生成輸出都存儲在這里),從而將其包含在項目中。配置文件 Web.config 文件是一種非凡的應用程序配置文件,可以在設計應用程序時定義其設置。部署之后,無需關閉 Web 服務器即可更改這些設置。多個名為 Web.config 的配置文件可以出現在 ASP.NET Web 應用程序服務器的多個目錄中。每個 Web.config 文件都將配置設置(例如 IIS 身份驗證設置)應用到其自身目錄的源文件中。您可以在 Web 項目中創建自定義配置文件,覆蓋默認的 Web.config 文件(例如,mysettings.config)中的設置。在團隊開發環境中工作時,有時候需要創建此類文件。對于 Web 項目,Web.config 是唯一要添加到源代碼治理的 *.config 文件。不進行源代碼治理的文件 Projectname.vbproj.webinfo 是非凡的項目文件,用于記錄虛擬應用程序根。由于每個用戶的項目工作副本必須包含其自身的虛擬應用程序根,因此 *.webinfo 文件不會出現在 Solution EXPlorer(解決方案資源治理器)中,也不會被添加到源代碼治理。因此,假如您分配了 *.webinfo 文件,則每個開發人員的更改都將在沒有事先警告的情況下保存到您的個人文件之上。除 webinfo 文件外,Visual Studio .NET 也不會向源代碼治理添加特定的項目文件。大多數排除的文件都包含不能共享的用戶特定的設置。與 *.suo 文件一樣,下列 Web 項目文件也不應添加到源代碼治理:
Web 引用、Web 項目和源代碼治理集成 “Web 引用”是生成的代理類,表示已部署的 xml Web service 所提供的功能。在 ASP.NET Web 項目中,URL 代表 Web 引用,它既可以是靜態的,也可以是動態的。Web 引用 URL 屬性的默認值是靜態的。在團隊中部署 Web 應用程序時,某些情況下需要將此屬性更改為動態。對于那些使用源代碼治理并且開發包含 ASP.NET Web 應用程序和 Web service 項目的解決方案的團隊,建議使用動態 URL。在某些情況下,Web 引用可能對一個用戶有效,而對另一個用戶無效。假如出現這種情況,您可以使用配置文件在個人配置文件中定義并存儲這些共享資源的相對路徑。建立源代碼治理策略 源代碼治理正如一種工具,以軟件開發的方式進行工作。它可以使并行開發變得更加輕易,還可以實現開發隔離,但是它并不能確保實現這兩個功能。一個團隊只有通過建立策略并堅持執行,才能發掘出源代碼治理的最大潛力。開發 Web 項目的策略時,您必須從以下各類中選擇一種工作方法:
本地主機與遠程主機
討論本地主機與遠程主機文件共享 Web 項目之間的重要區別。
Web 訪問方法
定義并比較 FrontPage 和文件共享訪問方法。
共享簽出
實現禁用獨占簽出模式的環境,以便開發人員能夠同時編輯相同的文件。
本地主機與遠程主機 在團隊開發環境中,最初保存文件共享 Web 項目的位置至關重要。假如將 Web 項目的工作副本保存到 http://localhost 的子目錄,則該 Web 項目將被看作“本地主機項目”。假如將其工作副本保存到非“本地主機”的位置(例如 http://teamserver/webapplication1),則該項目被看作“遠程主機項目”。本地主機項目在本地進行調試。遠程主機項目進行遠程調試。但是在您調試遠程主機 Web 項目之前,必須讓該計算機 Administrators 組的成員授予您 Debugger User 權限。在 Visual Studio .NET 中,Http://localhost 是 Web 項目的默認位置,也是推薦位置。出現下列情況之一時,您需要將項目的工作副本保存到遠程主機位置:
您的個人計算機不能用作 IIS Web 服務器。
您需要在生產服務器上執行預部署測試和調試。
在大多數實際情況下,團隊用來部署其 Web 應用程序的生產服務器的性能要比他們的開發計算機強大得多。將 Web 應用程序部署到此類服務器之前,您可以從源代碼治理(位于您自己的計算機中)中將它們打開,在生產服務器的虛擬目錄中設置工作副本項目的位置,然后運行并調試該項目。在生產服務器上,您可以測試計時和并發問題,這些問題在性能較差的臺式計算機上可能不會顯示出來。在一臺計算機上開發、然后使用與生產服務器環境類似或相同的另一臺計算機進行調試的應用程序,通常易于部署,而且成本較低。注重:當一位用戶開始調試后,調試進程將鎖定共享的 Web 服務器,從而在停止調試前有效防止其他用戶使用該服務器。Web 訪問方法 Web 訪問方法指定 Visual Studio 如何獲得對網絡上 Web 項目文件的寫入權限。您所選擇的方法對于處理源代碼治理的 Web 項目具有重大影響。對每個 Web 項目始終使用相同的 Web 訪問方法,可以避免團隊出現混亂情況。Visual Studio 提供兩種 Web 訪問方法,即“文件共享”和“FrontPage”。文件共享是一項新增功能,它是大多數 Visual Studio .NET Web 項目的默認 Web 訪問方法,也是建議使用的訪問方法。文件共享 這是默認的訪問方法。文件共享 Web 應用程序駐留在共享的網絡位置。創建 Web 應用程序時,您需要為項目提供 HTTP 地址,Visual Studio 則將該地址解析為統一命名約定 (UNC) 共享。接下來對該項目執行的操作將使用 UNC 可尋址網絡共享;通過組合使用直接文件訪問和 HTTP 訪問,在網絡位置上編輯、保存、編譯并運行該項目。從源代碼治理打開 Web 項目時,Visual Studio 將在您的工作文件夾(例如 http:/localhost/WebApp1)中創建項目源代碼治理的主控副本的工作副本。工作文件夾可以位于任何一個 Web 服務器上,但是在以團隊方式進行開發時,選擇正確的位置至關重要。下圖說明了多個開發人員如何以隔離方式,使用文件共享 Web 訪問方法安全地并行開發主控 Web 項目。由于每個開發人員都編輯主控 Web 項目的工作副本,因此文件共享 Web 訪問方法支持共享簽出。通過共享或多重簽出,許多用戶可以同時編輯項目文件并保存對項目文件的更改,而不必擔心是否可能會覆蓋另一個用戶的更改。對于專業的開發團隊而言,建議在共享或多簽出模式下工作,因為這將有助于并行開發。文件共享 Web 訪問方法比 FrontPage 更具優勢,因為它:
請使用與 Microsoft 源代碼治理接口 (MSSCCI) 兼容的任何源代碼治理提供程序。FrontPage 訪問方法僅適用于 Visual SourceSafe。FrontPage Server Extensions 您還可以使用 FrontPage Server Extensions 配置 Visual Studio,以訪問 Web 項目文件。在創建應用程序的服務器上,FrontPage 與 Visual SourceSafe 集成在一起。來自 Visual Studio 的源代碼治理請求通過 FrontPage Server Extensions 轉發到 Visual SourceSafe 的服務器安裝。在 Visual Studio .NET 中開發 FrontPage Web 項目時,存在一個工作副本。單版本項目駐留在 IIS Web 服務器上,在該服務器使用 HTTP 協議對其進行治理。下圖說明了兩個開發人員如何在由版本控制的 FrontPage Web 項目環境下進行交互操作。 注重:您不能通過 FrontPage Server Extensions 使用 Visual Studio 將項目添加到源代碼治理,必須在創建該項目的 Web 服務器上手動添加該項目。 對于大多數應用程序而言,建議團隊不要在 Visual Studio .NET 中使用 FrontPage Web 訪問方法,因為它不利于有效的并行開發。源代碼治理的 FrontPage Web 項目是以串行的方式進行開發的:一名開發人員一次編輯一個文件。然而在某些情況下,您必須使用 FrontPage Web 訪問方法。注重:假如您所在的團隊以 LAN 或 VPN 方式連接,您可以將現有的 Web 項目升級為新的文件共享訪問方法。共享簽出 對于大多數專業開發團隊,建議使用共享簽出(或多簽出模式)。通過共享簽出,多個用戶可以簽出并編輯任何文件,即使其他用戶已簽出該文件。假如您習慣于在獨占簽出模式下工作,則共享簽出所導致的合并沖突可能(無法自動解決的重疊更改)比想象中要少。假如出現沖突,源代碼治理提供程序通常會提供一種簡單的方法來確定哪些更改需要保留,哪些更改需要放棄。 假如團隊確實使用共享簽出模式,那么在沒有對 IDE 中的項目項事先執行 Get(獲取)操作的前提下,千萬不要使用 Check In(簽入)命令。從源代碼治理獲取最新版本后,您可以將個人更改與版本主控副本(假如上次簽出以后發生了更改)合并,將已合并的項目保存到工作文件夾,然后測試該項目,以確保它仍然可以正常工作。假如在沒有獲取最新版本的 Web 項目的情況下嘗試簽入自上次簽出后已發生更改的文件,則可能會以損壞的版本覆蓋工作版本。在這種情況下,您有兩種選擇,但兩種選擇都不會令人滿足:
可以在 Web 服務器上調試該項目。但對于 ASP.NET Web 項目來說,在您的工作完成之前,這樣做可能會阻止其他開發人員使用該項目。
協作開發模式 對于 Web 項目而言,協作開發模式由以下兩個因素綜合決定,即:每個項目的 Web 訪問方法和開發人員保存其工作副本的位置。主要有三種模式:
隔離開發
半隔離開發
非隔離開發
隔離開發 在這種模式下,每個開發人員都可以進行編輯、運行和調試,并將增量更改保存到團隊中源代碼治理的主控 Web 項目的個人工作副本中。開發人員將工作副本保存到他們的個人 Web 服務器上的本地主機位置。各個成員通過源代碼治理的主控項目進行間接交互。團隊成員可以同時處理相同的文件,因為他們的源代碼治理提供程序可以通過以下兩種方式調節所有版本沖突:自動調節或者提示成員手動合并無法自動解決的沖突。下圖說明了源代碼治理如何將文件共享 Web 項目的開發人員之間相互隔離開來,不受彼此更改的影響。使用“本地主機模式”,開發人員可以在 http://localhost/projectname 下創建 Web 項目。當項目開發人員首次從源代碼治理打開項目時,他們將工作副本保存到個人 Web 服務器的同一相對 URL 地址中,即 http://localhost/projectname。提示:即使沒有將工作副本保存到本地主機位置(例如 http://ProdUCtionServer/WebApp1),只要確保您的隊友沒有將其工作副本保存到同一個 Web 服務器,您仍然可以實現完全隔離。將您的工作副本保存到遠程 Web 服務器上,以在項目的生產環境中執行部署前測試和調試(查找計時和并發問題)。優勢
半隔離開發 在此模式下,由一個團隊成員創建文件共享 Web 項目,然后使用 Visual Studio .NET 集成的源代碼治理服務將該項目添加到源代碼治理中。其他開發人員從源代碼治理打開該項目,并以隔離方式編輯主 Web 項目的工作副本。不過,他們使用遠程 Web 服務器的共享資源來運行和調試。與隔離開發模式不同,開發人員將各自的工作副本保存到公共 Web 服務器上。多個開發人員仍然可以同時簽出和編輯相同的文件,但是任何時候,都只有一個開發人員能夠在 Web 服務器上運行和調試應用程序。下圖顯示了在開發源代碼治理的文件共享 Web 項目時,開發人員與其工作副本在共享 Web 服務器上的位置之間的關系。使用半隔離模式,開發人員可以在遠程服務器上創建 Web 項目(例如,http://teamserver/WebApp1_DevA),然后將其添加到源代碼治理中。項目開發人員首次從源代碼治理打開該項目時,他們使用不同的項目名稱將自己的工作副本保存在同一個遠程 Web 服務器上的不同位置(例如,http://teamserver/WebApp1_DevB)。與簡單的隔離開發模式不同,開發人員不能使用與其他開發人員相同的名稱來引用工作副本。優勢
當任一用戶進行調試時,調試進程將鎖定共享的 Web 服務器,從而阻止其他用戶使用同一服務器上的項目。
Web 引用不能自動共享。
所有開發人員都必須具備對相同 LAN 或 VPN 的訪問權限。
非隔離開發 在此模式下,開發人員并不是在 Web 項目的工作副本上進行操作,而是所有的團隊成員直接進行編輯,并將其更改保存到 FrontPage Web 項目的主控副本。開發人員無法并行工作,也無法輕易與其他開發人員隔離開來。下圖說明了兩個開發人員如何在非隔離 Web 項目(已在 IIS 中配置為使用外部版本控件)環境中進行交互操作。與文件共享項目不同,在 IDE 中,您無法將 FrontPage Web 項目添加到源代碼治理,而要在 IIS 中更改其版本控件狀態。Built in(內置)和 Use External(使用外部)這兩個 IIS 版本控件選項都可以強制執行獨占簽出,從而在某一時刻只答應由一名開發人員對文件進行寫入操作。這兩個版本控件選項的區別在于:Built in(內置)在簽入時不會將最新的版本發送到源代碼治理,而 Use External(使用外部)則會將最新的版本發送到源代碼治理。對于 FrontPage Web 項目而言,建議使用 Use External(使用外部)選項。優勢
團隊成員不必通過 LAN 或 VPN 進行連接。
缺點
不支持多重簽出。
不能提供與其他模式相同的文件安全保護級別。例如,假如某人在使用 Built in(內置)版本控件時從 Web 服務器上刪除了項目文件,則無法從團隊成員的開發計算機中恢復該文件。
不能使用 FrontPage 訪問方法從 Visual Studio 內部將 Web 應用程序添加到源代碼治理。
在 FrontPage Web 項目中,無論用戶的源代碼治理提供程序指定的權限級別如何,只要具有治理員權限,任何用戶都可以禁用或啟用源代碼治理。
選擇一種協作開發模式:Web 項目創建 本節可以幫助您快速選擇并實施以團隊形式進行 ASP.NET Web 項目開發的策略。請回答下表中的問題,以尋找適合您的團隊的協作開發模式。選擇一種模式后,您可以使用建議的步驟來創建您的 Web 項目,并將其添加到源代碼治理。隔離開發:創建源代碼治理的 Web 項目 對于在 Visual Studio .NET 中創建的大部分 Web 項目,建議您采用隔離開發模式。選擇 Web 訪問方法
在 Tools(工具)菜單上,單擊 Options(選項)。
在 Options(選項)對話框中,單擊 Projects(項目)文件夾,然后單擊 Web Settings(Web 設置)。
現在,您可以將該 Web 項目添加到源代碼治理,以便您的隊友在開發中使用。假如可能,請將項目添加到答應共享簽出或多重簽出的源代碼治理數據庫。將 Web 項目(及其解決方案)添加到源代碼治理
在 Solution Explorer(解決方案資源治理器)中,右鍵單擊解決方案節點,然后單擊 Add Solution to Source Control(將解決方案添加到源代碼治理)。
假如顯示消息框,請單擊 Continue(繼續)。
按照源代碼治理提供程序的要求提供數據庫位置和用戶登錄信息。
通過指定解決方案文件的服務器位置,在源代碼治理服務器上創建根解決方案目錄。
在根解決方案目錄下,鍵入項目文件夾的名稱,該文件夾將包含 Web 項目文件的主控副本。 注重:要在此解決方案中向源代碼治理添加第二個項目及后續項目,請在更改完畢后簽入解決方案。
要充分利用隔離開發模式的優點,在首次從源代碼治理打開 Web 項目時,項目開發人員必須單獨指定該項目工作副本的同一相對地址(http://localhost/projectname)。半隔離開發:創建源代碼治理的 Web 項目 雖然半隔離開發模式比非隔離開發模式要好,但它不象隔離模式那樣有助于協作開發。選擇 Web 訪問方法
在 Tools(工具)菜單上,單擊 Options(選項)。
在 Options(選項)對話框中,單擊 Projects(項目)文件夾,然后單擊 Web Settings(Web 設置)。
在 Location(位置)框中,鍵入 http://servername/projectname(其中 servername 是 Web 服務器的名稱,projectname 是新建項目的名稱),然后單擊 OK(確定)。
現在,您可以將該 Web 項目添加到源代碼治理,以便您的隊友在開發中使用。注重:假如您已經安裝了 FrontPage Server Extensions 2002,以下某些步驟可能會略有不同。 為 FrontPage Web 項目打開外部源代碼治理
右鍵單擊“我的電腦”,單擊 Manage(治理),然后單擊 Services and Applications(服務和應用程序)。
打開 Internet Information Services(Internet 信息服務),然后展開 Default Web Site(默認 Web 站點)。
右鍵單擊 FrontPage Web 項目所在的 Web,然后單擊 Properties(屬性)。
在 Properties(屬性)對話框中,單擊 Server Extensions(服務器擴展)選項卡,將 Version Control(版本控制)框設置為 Use External(使用外部),然后單擊 OK(確定)。
對于可能顯示的所有警告消息,均單擊 OK(確定)。
至此,項目已預備就緒,可以進行開發。現在,每個項目開發人員都必須按照首次打開現有 Web 項目中介紹的一種步驟,從源代碼治理打開該項目。首次打開現有 Web 項目 本節可以幫您確定如何從源代碼治理打開 Web 項目,并確定保存工作副本的最佳位置(適用于文件共享 Web 項目)。回答下表中的問題并向其他項目開發人員咨詢,以確定首次打開現有的、源代碼治理的 Web 項目的最佳方法。注重:對于正在打開文件共享 Web 項目(對第一個問題做出肯定回答)的開發人員而言,需要詢問項目所有者保存工作副本的位置。對于隔離開發,請將其保存在 http://localhost/projectname 中。對于半隔離開發,請使用非本地主機 URL 保存工作副本。 隔離開發:首次打開 Web 項目
在 File(文件)菜單上,單擊 Source Control(源代碼治理),然后單擊 Open from Source Control(從源代碼治理打開)。
在相應的源代碼治理數據庫中找到要打開的 Web 項目,然后單擊 OK(確定)。
當系統提示您提供本地工作副本的位置時,鍵入 http://localhost/projectname,其中 projectname 與源代碼治理的主控副本的名稱相同。 注重:下次打開該項目時,請不要使用 Open from Source Control(從源代碼治理打開)命令,而應與打開任何其他項目一樣使用 Open Project(打開項目)命令。
半隔離開發:首次打開 Web 項目
在 File(文件)菜單上,指向 Source Control(源代碼治理),然后單擊 Open from Source Control(從源代碼治理打開)。
在相應的源代碼治理數據庫中找到要打開的 Web 項目,然后單擊 OK(確定)。
當系統提示您提供本地保存位置或工作副本位置時,鍵入 http://servername/projectname_myname,其中 servername 是共享 Web 服務器的名稱,projectname 與源代碼治理的主控副本的名稱相同,_myname 是您的姓名或首字母縮寫。 注重:下次打開該項目時,請不要使用 Open from Source Control(從源代碼治理打開)命令,而應與打開任何其他項目一樣使用 Open Project(打開項目)命令。
非隔離開發:首次打開 Web 項目
在 File(文件)菜單上,單擊 Open(打開),然后單擊 Project from Web(Web 項目)。
假如系統顯示 Web Access Failed(Web 訪問失敗)對話框(通常會顯示此對話框),請單擊 Try to open the project with FrontPage Server Extensions(嘗試使用 FrontPage Server Extensions 打開項目)按鈕。 注重:下次打開該項目時,請不要使用 Project from Web(Web 項目)命令,而應與打開任何其他項目一樣使用 Open Project(打開項目)命令。
后臺源代碼治理集成 以下小節說明了當您將 Web 項目添加到源代碼治理或首次從源代碼治理打開項目時會出現的情況。將 Web 項目解決方案添加到源代碼治理中時,會發生什么? 當您將文件共享 Web 項目添加到源代碼治理時,會出現以下情況:
收到消息:“You are attempting to add some File Share Web access projects to source control.If you continue, you will no longer be able to open these projects using FrontPage Web access.”(您正在嘗試將某些文件共享 Web 訪問項目添加到源代碼治理。假如繼續操作,您將無法再使用 FrontPage Web 訪問打開這些項目。)這是一則常規的通知消息。
下圖說明了如何將項目的工作副本綁定到源代碼治理下的主控副本。由于文件位于不同的根目錄,因此需要為一個簡單的解決方案 Web 項目對創建兩個綁定。從源代碼治理打開 Web 項目解決方案時,會發生什么? 首次在 Visual Studio .NET 中從源代碼治理打開文件共享 Web 項目時,會出現以下情況:
為解決方案文件創建了綁定。 您的提供程序要求您識別用于解決方案文件的個人工作文件夾。此操作將在源代碼治理數據庫中的工作文件夾和它的主控副本之間創建一個關系或綁定。根據提供程序,此過程通常包括在工作文件夾的根目錄創建數據文件。這些文件的默認位置為個人 Visual Studio 項目目錄。
您可能已經注重到,當您創建沒有解決方案的新項目時,Visual Studio 將為您創建一個新的解決方案。包含 Web 項目的解決方案與包含非 Web 項目的解決方案并無差異。也就是說,它們最初都包含兩個文件(solutionname.sln 和 solutionname.suo),并且在默認情況下,這兩個文件被保存到磁盤上 Visual Studio 項目所在的位置。另一方面,Web 項目文件必須保存到虛擬目錄中。 只要您添加兩項或多項(例如,解決方案文件和項目文件),您的源代碼治理提供程序就會在這些項的根目錄中創建一個鏈接文件。假如這些項共享一個根目錄,則提供程序將在最低一級的公共根目錄中創建鏈接文件。假如這些項不共享公共根目錄,例如,一些項駐留在磁盤上,而另一些項駐留在虛擬內存中,提供程序將在兩個位置都創建鏈接文件。因此,當您將 Web 項目解決方案添加到源代碼治理時,提供程序會兩次提示您標識工作文件夾,一次用于標識解決方案,另一次用于標識項目。
通過什么方法可以自動通知團隊成員有關 Web service 的更改,以確保及時刷新所有客戶端引用?
Visual Studio .NET 不提供這類工具。編輯 Web service 的團隊成員必須親自通知其他團隊成員有關的更改。
我所在的團隊有四個開發人員,其中兩個開發人員的工作位置在企業網絡范圍以外。在開發 Web 應用程序項目時,我們應當使用哪種協作開發模式?
使用非隔離開發模式。
Visual InterDev 開發人員的常見問題
在 Visual Studio .NET 中,我的團隊是否能夠在本地模式下工作?在 VID 中,每個開發人員都脫機工作,將所做的更改保存到本地工作副本中,然后再更新主服務器版本。在 Visual Studio .NET 中也可以這樣做嗎?
可以。與 IDE 中的明確標識不同,在 Visual Studio .NET 中協作開發 Web 項目時,本地模式為默認使用的方法。要使用本地模式,請使用隔離或半隔離開發模式。
在 Visual Studio .NET 中,我的團隊是否能夠在主控模式下工作?
可以。您可以將您的 Web 訪問模式設置為 FrontPage,并使用非隔離開發模式。不過,在已編譯的 ASP.NET 環境中,對于團隊開發,通常并不推薦使用非隔離模式。
在 Visual Studio .NET 中,如何將我的工作副本發布到主服務器上或者將更改同步到主服務器上?
與 VID 不同,Visual Studio .NET 中沒有 Release Working Copy(發布工作副本)命令。要在 Visual Studio .NET 中更新生產服務器(主服務器),必須使用幾種方法之一對其進行部署。部署 ASP.NET 項目的第一步是更新源代碼治理的主控副本。第二步是將項目文件復制到生產服務器。
并不完全相同。在 VID 中,工作副本是指您具有寫入權限的 Web 的版本。在本地模式中,您的本地版本為工作副本。在主控模式中,您的主控副本為工作副本。對于 Visual Studio .NET 中的文件共享 Web 項目,工作副本始終為您的個人版本。對于 FrontPage Web 項目,所有團隊成員都將更改保存到同一主控副本中。
在我的工作副本(本地版本)上工作時,如何將我的更改同步到服務器?
如前文所述,只有文件共享 Web 項目才存在工作副本。在文件共享項目中,主控副本駐留在源代碼治理數據庫中,且無法使用瀏覽器進行訪問。要使對工作副本所做的更改與源代碼治理的主控副本同步,請從源代碼治理獲取最新的版本,在 Visual Studio 中生成項目,然后簽入該項目。
附錄 A:設置動態 URL Web 引用 假如您創建的解決方案既包含 XML Web service,又包含 ASP.NET Web 項目,且從您的 ASP.NET 項目引用 XML Web services,則 Web 引用對您有效,而對其他用戶無效。團隊成員不能總是共享 Web 引用,因為 Visual Studio 在 Web.config 文件中將這些引用存儲為靜態、硬編碼的字符串。假如所有團隊成員都將自己的工作副本的項目位置設置為 http:/localhost/projectname,就不會發生這個問題,因為這樣做可以有效地指定物理位置的相對路徑 http://computername/projectname。對于非本地主機項目,您可以通過將項目的 Web.config 文件中的靜態 Web 引用 URL 轉換為動態屬性來解決這個問題。您應使用動態屬性配置應用程序,以便該屬性的部分或全部屬性值都存儲在外部配置文件中,而不是存儲在應用程序的已編譯代碼中。提示:由于您或任何其他用戶都可以在運行時更改屬性值,因此,可以使用動態屬性迅速而方便地測試不同的 Web services。 您還可以使用動態屬性,使您的 Windows 應用程序更加易于測試、部署和治理。以下步驟說明了在團隊開發環境中,當引用調用項目所在的同一服務器上的 Web service 時,如何有效地共享 Web 引用。這些步驟假定您已經在名為 Server1 的服務器上創建了一個名為 WebApplication1 的文件共享 Web 項目和兩個 Web services(WS1 和 WS2),還假定您已經將一個 Web 引用添加到了引用 WS1 的 WebApplication1。提示:通過打開 Service1.asmx,切換到代碼視圖,然后從 Hello World 示例的相應代碼行中刪除注釋,可以迅速創建 Web service。為了在運行時區分這兩個服務,請在它們各自的文件中將“Hello World”更改為“Hello World: WS1”和“Hello World: WS2”。在源代碼治理下使 Web 引用 URL 可動態配置與共享
在 Solution Explorer(解決方案資源治理器)中,展開 Web References(Web 引用)文件夾,并選擇相應的服務。
在 Properties(屬性)窗口中,將 URL Behavior(URL 行為)的值從 Static(靜態)更改為 Dynamic(動態)。 假定您的 Web service 返回某種類型的內容,Visual Studio 會自動將以下代碼添加到項目的 Web.config 文件中:
下次運行 WebApplication1 時,就可以看到“Hello World: WS2”,而不是“Hello World: WS1”了。附錄 B:更改 Web 訪問方法 更改項目的 Web 訪問方法將從根本上改變您和您的團隊伙伴在源代碼治理下與主控副本進行交互的方式。建議將 FrontPage 項目升級為文件共享。只在絕對必要時,才將文件共享項目轉換為 FrontPage Web 訪問方法。在執行下列任何步驟之前,請確保您要更改的所有項目版本都已簽入源代碼治理中。選擇以下鏈接之一,進一步了解如何更改 Web 項目的 Web 訪問方法:
從 Visual InterDev 項目升級到文件共享
從 FrontPage 升級到文件共享
將文件共享項目轉換為 FrontPage
從 Visual InterDev 項目升級到文件共享 您可以將源代碼治理的 Visual InterDev (VID) Web 升級到 ASP.NET,以便使用文件共享 Web 訪問方法從源代碼治理進行訪問。注重:這一過程可以在源代碼治理下有效地將您的 VID 項目分叉為兩個項目。您仍然可以在項目的早期版本上查看歷史記錄和執行源代碼治理操作,但只能通過在源代碼治理中打開 VID 項目來完成。 從 Visual InterDev 項目升級到文件共享
打開 Visual Studio .NET,單擊 Tools(工具),然后單擊 Options(選項)。
在 Options(選項)對話框中,單擊 Projects(項目)文件夾,然后單擊 Web Settings(Web 設置)。
在 Visual Studio .NET 的 File(文件)菜單上,指向 New(新建),然后單擊 Project(項目)。
在 New Project(新建項目)對話框中,在左側窗格中選擇一種語言(Visual Basic 或 C#),在右側窗格中單擊 ASP.NET Web Application(ASP.NET Web 應用程序),鍵入位置(例如 http://localhost/MyNewWeb),然后單擊 OK(確定)。
最小化 Visual Studio .NET IDE,啟動 Visual SourceSafe Explorer,然后打開包含 VID 項目文件的 SourceSafe 數據庫。
打開您的 Web 項目文件夾,在 Contents(目錄)窗格中選擇所有源文件,指向 SourceSafe,然后單擊 Get Latest Version(獲取最新版本)。
在 Get(獲取)對話框中,以 ASP.NET Web 應用程序路徑(例如 c:/inetpub/wwwroot/MyNewWeb)替換 To(到)框中的所有文本,選擇 Make Writable(使可寫),然后單擊 OK(確定)。
在 Visual Studio .NET 中,選擇您的項目,并在 File(文件)菜單上單擊 Add Existing Item(添加現有項)。
在 Add Existing Item(添加現有項)對話框中,打開 Web 項目的工作文件夾,選擇剛剛從源代碼治理復制的所有文件,然后單擊 Open(打開)。
在 Solution Explorer(解決方案資源治理器)中右鍵單擊解決方案節點,然后單擊 Add Solution to Source Control(將解決方案添加到源代碼治理)。
從 FrontPage 升級到文件共享 將在 Visual Studio .NET 中創建的 FrontPage Web 項目升級為建議的文件共享 Web 訪問方法,可以:
提高團隊的 ASP.NET Web 應用程序資源的日常可治理性和完整性。
使用不同于 Visual SourceSafe 的源代碼治理提供程序。過去,只有 Visual SourceSafe 這一源代碼治理提供程序能夠治理 Web 項目。現在,許多第三方源代碼治理應用程序都支持文件共享 Web 訪問方法。
在下面的步驟中,將使用 Internet 信息服務 (IIS) 治理控制臺禁用 FrontPage Web 項目的源代碼治理集成,然后使用 Visual Studio .NET 更改 Web 訪問方法并重新將項目綁定到源代碼治理下。禁用 FrontPage Web 項目的源代碼治理
右鍵單擊“我的電腦”,單擊 Manage(治理),單擊 Services and Applications(服務和應用程序),打開 Internet Information Services(Internet 信息服務),然后展開 Default Web Site(默認 Web 站點)。
右鍵單擊 FrontPage Web 項目所在的 Web,然后單擊 Properties(屬性)。
在 Properties(屬性)對話框中,單擊 Server Extensions(服務器擴展)選項卡,將 Version Control(版本控制)框設置為 None(無),然后單擊 OK(確定)。
對于可能顯示的所有消息,均單擊 OK(確定)。
現在,打開 Visual Studio .NET,將 Web 訪問方法更改為文件共享,然后將項目重新綁定到源代碼治理下的個人工作文件夾。更改 Web 訪問方法并重新綁定項目
在 IDE 的 File(文件)菜單上,指向 Open(打開),單擊 Project from Web(Web 項目),輸入您的 Web 項目的 URL,然后單擊 OK(確定)。
在 Solution Explorer(解決方案資源治理器)中,右鍵單擊要轉換的 Web 項目,然后單擊 Properties(屬性)。
在 Project Properties(項目屬性)對話框中的 Common Properties(公共屬性)下,選擇 Web Settings(Web 設置),然后將 Web Access Mode(Web 訪問模式)的值更改為 FrontPage。
選擇解決方案,并在 File(文件)菜單上,單擊 Close Solution(關閉解決方案)。
現在,您可以為 FrontPage Web 啟用源代碼治理。以下過程中的某些步驟可能與 FrontPage Server Extensions 2002 中的步驟有所不同。為 FrontPage Web 項目打開外部源代碼治理
右鍵單擊“我的電腦”,單擊 Manage(治理),然后單擊 Services and Applications(服務和應用程序)。
打開 Internet Information Services(Internet 信息服務),然后展開 Default Web Site(默認 Web 站點)節點。
右鍵單擊 FrontPage Web 項目所在的 Web,然后單擊 Properties(屬性)。
在 Properties(屬性)對話框中,單擊 Server Extensions(服務器擴展)選項卡,將 Version Control(版本控制)框設置為 Use External(使用外部),然后單擊 OK(確定)。
對于可能顯示的所有警告消息,均單擊 OK(確定)。
附錄 C:部署 Web 項目 Visual Studio .NET 提供了多種功能強大的部署工具,包括 Web 設置和部署項目。以下過程介紹了一種簡單方法,可以將主控副本(位于源代碼治理數據庫)中的更改推廣到其生產服務器位置。對于 Web 項目,可以使用 Project(項目)菜單上的 Copy Project(復制項目)。復制項目(而不是部署項目)是將項目內容移到目標 Web 服務器上的一種簡便方法。不過,復制操作不能自動配置 Internet 信息服務 (IIS) 目錄設置。因此,在大多數情況下,我們建議您部署項目,因為它使您能夠利用許多部署項目治理功能,如注冊和 IIS 配置。默認情況下,Copy Project(復制項目)命令將在目標服務器上創建新的 Web 應用程序,并且只將需要運行的文件復制到該應用程序。目標服務器上必須安裝 FrontPage Server Extensions,才能使用 Copy Project(復制項目)命令。另外,請注重您用來部署項目的 Web 訪問方法與 Visual Studio 中項目的 Web 訪問方法完全不相關,也不會更改后者。以下步驟將通過 HTTP 部署 Web 應用程序。部署 ASP.NET Web 項目