摘要:本文为在 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 项目