杨的空间
业精于勤,荒于嬉,行成于思,毁于随
 

Visual Studio .NET 中的 Web 项目和源代码管理集成

来源:http://www.microsoft.com/china/MSDN/library/archives/library/dv_vstechart/html/vetchWebProjectssourCEcontrolintegrationinVisualStudionet.asp#vetchappendixcdeployingwebprojects

Korby Parnell 和 Martyn Lovell
Visual Studio Team
Microsoft Corporation
2002 年 2 月

摘要:本文为在 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 项目的结构和可管理性。有关将 Web 项目解决方案添加到源代码管理中时所发生情况的详细信息,请参阅将 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 访问方法支持的源代码管理命令比文件共享访问方法支持的命令要少。有关 FrontPage 访问方法的详细信息,请参阅 FrontPage Server Extensions

项目文件

与本地项目不同,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 项目,Web.config 是唯一要添加到源代码管理的 *.config 文件。

不进行源代码管理的文件

Projectname.vbproj.webinfo 是特殊的项目文件,用于记录虚拟应用程序根。由于每个用户的项目工作副本必须包含其自身的虚拟应用程序根,因此 *.webinfo 文件不会出现在 Solution Explorer(解决方案资源管理器)中,也不会被添加到源代码管理。因此,如果您分配了 *.webinfo 文件,则每个开发人员的更改都将在没有事先警告的情况下保存到您的个人文件之上。

除 webinfo 文件外,Visual Studio .NET 也不会向源代码管理添加特定的项目文件。大多数排除的文件都包含不能共享的用户特定的设置。与 *.suo 文件一样,下列 Web 项目文件也不应添加到源代码管理:

  • 生成输出
  • *.vbproj.user、*.csproj.user
  • *.vbproj.webinfo、*.csproj.webinfo
  • *.scc、.vspscc、.vssscc 等等。
  • 包含可覆盖标准 Web.config 文件的用户设置的所有配置文件。有关示例,请参阅附录 A:设置动态 URL Web 引用
  • 默认情况下在 Solution Explorer(解决方案资源管理器)中隐藏的所有文件(aspx.vb 和 aspx.resx 文件除外)。

Web 引用、Web 项目和源代码管理集成

“Web 引用”是生成的代理类,表示已部署的 XML Web service 所提供的功能。在 ASP.NET Web 项目中,URL 代表 Web 引用,它既可以是静态的,也可以是动态的。Web 引用 URL 属性的默认值是静态的。在团队中部署 Web 应用程序时,某些情况下需要将此属性更改为动态。对于那些使用源代码管理并且开发包含 ASP.NET Web 应用程序和 Web service 项目的解决方案的团队,建议使用动态 URL。在某些情况下,Web 引用可能对一个用户有效,而对另一个用户无效。如果出现这种情况,您可以使用配置文件在个人配置文件中定义并存储这些共享资源的相对路径。有关动态 URL Web 引用及其创建方法的详细信息,请参阅附录 A:设置动态 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 项目。

图 1

由于每个开发人员都编辑主控 Web 项目的工作副本,因此文件共享 Web 访问方法支持共享签出。通过共享或多重签出,许多用户可以同时编辑项目文件并保存对项目文件的更改,而不必担心是否可能会覆盖另一个用户的更改。对于专业的开发团队而言,建议在共享或多签出模式下工作,因为这将有助于并行开发。有关详细信息以及在共享或多签出模式下工作的最佳实例,请参阅共享签出

文件共享 Web 访问方法比 FrontPage 更具优势,因为它:

  • 支持共享签出。通过共享签出,多个用户可以签出并编辑任何文件,即使其他用户已签出该文件。
  • 支持高级源代码管理命令,例如 branch、merge、pin 和 label。
  • 允许进行隔离。团队成员可以在其个人计算机上编辑共享文件,然后安全地合并更改,而不会覆盖团队的主控副本。

请使用与 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 项目环境下进行交互操作。

图 2

注意:您不能通过 FrontPage Server Extensions 使用 Visual Studio 将项目添加到源代码管理,必须在创建该项目的 Web 服务器上手动添加该项目。

对于大多数应用程序而言,建议团队不要在 Visual Studio .NET 中使用 FrontPage Web 访问方法,因为它不利于有效的并行开发。源代码管理的 FrontPage Web 项目是以串行的方式进行开发的:一名开发人员一次编辑一个文件。然而在某些情况下,您必须使用 FrontPage Web 访问方法。有关详细信息,请参阅协作开发模式

注意:如果您所在的团队以 LAN 或 VPN 方式连接,您可以将现有的 Web 项目升级为新的文件共享访问方法。有关详细信息,请参阅从 FrontPage 升级到文件共享

共享签出

对于大多数专业开发团队,建议使用共享签出(或多签出模式)。通过共享签出,多个用户可以签出并编辑任何文件,即使其他用户已签出该文件。

如果您习惯于在独占签出模式下工作,则共享签出所导致的合并冲突可能(无法自动解决的重叠更改)比想象中要少。如果出现冲突,源代码管理提供程序通常会提供一种简单的方法来确定哪些更改需要保留,哪些更改需要放弃。

如果团队确实使用共享签出模式,那么在没有对 IDE 中的项目项事先执行 Get(获取)操作的前提下,千万不要使用 Check In(签入)命令。从源代码管理获取最新版本后,您可以将个人更改与版本主控副本(如果上次签出以后发生了更改)合并,将已合并的项目保存到工作文件夹,然后测试该项目,以确保它仍然可以正常工作。如果在没有获取最新版本的 Web 项目的情况下尝试签入自上次签出后已发生更改的文件,则可能会以损坏的版本覆盖工作版本。在这种情况下,您有两种选择,但两种选择都不会令人满意:

  • 可以在 Web 服务器上调试该项目。但对于 ASP.NET Web 项目来说,在您的工作完成之前,这样做可能会阻止其他开发人员使用该项目。有关详细信息,请参阅本地主机与远程主机
  • 在源代码管理中,您可以返回到最近的主控副本的正常版本,自上次签出项目后对工作副本所做的更改将会丢失。这种方法会导致数据丢失,因此建议您不要采用。另外,必要时最好在您自己的计算机上执行 Get(获取)操作并进行合并,而不要在服务器上执行签入及合并。

源代码管理提供程序以不同的方式处理共享签出。如果您使用的是 Visual SourceSafe 6.0c,则在默认情况下为独占签出。

在 Visual SourceSafe 6.0 中实现共享签出

  1. 在源代码管理服务器上,单击“开始”按钮,指向“程序”,指向“Microsoft Visual SourceSafe”,然后单击“Visual SourceSafe 6.0 Admin”。
  2. 单击 Users(用户),单击 Open SourceSafe Database(打开 SourceSafe 数据库),选择相应的数据库,然后单击 Open(打开)。
  3. Tools(工具)菜单中,单击 Options(选项)。

    General(常规)选项卡上,选择 Allow multiple checkouts(允许多重签出),然后单击 OK(确定)。

协作开发模式

对于 Web 项目而言,协作开发模式由以下两个因素综合决定,即:每个项目的 Web 访问方法和开发人员保存其工作副本的位置。主要有三种模式:

隔离开发

在这种模式下,每个开发人员都可以进行编辑、运行和调试,并将增量更改保存到团队中源代码管理的主控 Web 项目的个人工作副本中。开发人员将工作副本保存到他们的个人 Web 服务器上的本地主机位置。各个成员通过源代码管理的主控项目进行间接交互。团队成员可以同时处理相同的文件,因为他们的源代码管理提供程序可以通过以下两种方式调节所有版本冲突:自动调节或者提示成员手动合并无法自动解决的冲突。下图说明了源代码管理如何将文件共享 Web 项目的开发人员之间相互隔离开来,不受彼此更改的影响。

图 3

使用“本地主机模式”,开发人员可以在 http://localhost/projectname 下创建 Web 项目。当项目开发人员首次从源代码管理打开项目时,他们将工作副本保存到个人 Web 服务器的同一相对 URL 地址中,即 http://localhost/projectname

提示:即使没有将工作副本保存到本地主机位置(例如 http://ProductionServer/WebApp1),只要确保您的队友没有将其工作副本保存到同一个 Web 服务器,您仍然可以实现完全隔离。将您的工作副本保存到远程 Web 服务器上,以在项目的生产环境中执行部署前测试和调试(查找计时和并发问题)。

优势

  • 与在半隔离或非隔离开发环境下创建项目相比,在隔离模式下可以更轻松地创建、访问和管理 Web 引用。
  • 两个或多个开发人员可以分别在各自的服务器上同时调试 ASP.NET 应用程序。
  • 与其他协作开发模式相比,隔离模式的硬件、软件和服务器管理成本非常合理。
  • 支持高级源代码管理功能,例如共享(多重)签出,以及 merge、branch、pin 和 label 等命令。
  • 可以与任何 MSSCCI 兼容的源代码管理提供程序一起使用。

缺点

  • 在某些情况下,无法实际进行测试(例如,正在使用模拟/代理并且存在跃点限制,或者生产服务器的速度比开发计算机的速度快得多)。
  • 每个开发人员都要负责配置 IIS 设置,而当工作副本存储在中心 Web 服务器上时,则不必如此。
  • 所有开发人员都必须具备对相同 LAN 或 VPN 的访问权限。

半隔离开发

在此模式下,由一个团队成员创建文件共享 Web 项目,然后使用 Visual Studio .NET 集成的源代码管理服务将该项目添加到源代码管理中。其他开发人员从源代码管理打开该项目,并以隔离方式编辑主 Web 项目的工作副本。不过,他们使用远程 Web 服务器的共享资源来运行和调试。与隔离开发模式不同,开发人员将各自的工作副本保存到公共 Web 服务器上。多个开发人员仍然可以同时签出和编辑相同的文件,但是任何时候,都只有一个开发人员能够在 Web 服务器上运行和调试应用程序。

下图显示了在开发源代码管理的文件共享 Web 项目时,开发人员与其工作副本在共享 Web 服务器上的位置之间的关系。

图 4

使用半隔离模式,开发人员可以在远程服务器上创建 Web 项目(例如,http://teamserver/WebApp1_DevA),然后将其添加到源代码管理中。项目开发人员首次从源代码管理打开该项目时,他们使用不同的项目名称将自己的工作副本保存在同一个远程 Web 服务器上的不同位置(例如,http://teamserver/WebApp1_DevB)。与简单的隔离开发模式不同,开发人员不能使用与其他开发人员相同的名称来引用工作副本。

优势

  • 硬件成本较低,每个项目只需要一套企业软件许可证。
  • 团队可以有一个网络管理员,专门负责共享开发资源的管理。
  • 无需访问 http://localhost。无需在每个开发人员的计算机上安装 IIS。
  • 支持高级源代码管理功能,例如共享(多重)签出,以及 merge、branch、pin 和 label 等命令。
  • 可以与任何 MSSCCI 兼容的源代码管理提供程序一起使用。

缺点

  • 当任一用户进行调试时,调试进程将锁定共享的 Web 服务器,从而阻止其他用户使用同一服务器上的项目。
  • Web 引用不能自动共享。有关详细信息,请参阅附录 A:设置动态 URL Web 引用
  • 所有开发人员都必须具备对相同 LAN 或 VPN 的访问权限。

非隔离开发

在此模式下,开发人员并不是在 Web 项目的工作副本上进行操作,而是所有的团队成员直接进行编辑,并将其更改保存到 FrontPage Web 项目的主控副本。开发人员无法并行工作,也无法轻易与其他开发人员隔离开来。下图说明了两个开发人员如何在非隔离 Web 项目(已在 IIS 中配置为使用外部版本控件)环境中进行交互操作。

图 5

与文件共享项目不同,在 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 应用程序添加到源代码管理。有关详细信息,请参阅设置外部源代码管理
  • 不支持高级源代码管理功能,例如共享(多重)签出;或 merge、branch、pin 和 label 等命令。
  • 只能与 Visual SourceSafe 源代码管理提供程序配合使用。
  • 项目必须保存在 NTFS 分区中。
  • 在 FrontPage Web 项目中,无论用户的源代码管理提供程序指定的权限级别如何,只要具有管理员权限,任何用户都可以禁用或启用源代码管理。

选择一种协作开发模式:Web 项目创建

本节可以帮助您快速选择并实施以团队形式进行 ASP.NET Web 项目开发的策略。请回答下表中的问题,以寻找适合您的团队的协作开发模式。选择一种模式后,您可以使用建议的步骤来创建您的 Web 项目,并将其添加到源代码管理。

图 6:确定创建 Web 项目的方式

隔离开发:创建源代码管理的 Web 项目

对于在 Visual Studio .NET 中创建的大部分 Web 项目,建议您采用隔离开发模式。有关该模式的优缺点的详细信息,请参阅隔离开发

选择 Web 访问方法

  1. Tools(工具)菜单上,单击 Options(选项)。
  2. Options(选项)对话框中,单击 Projects(项目)文件夹,然后单击 Web Settings(Web 设置)。
  3. Preferred access method(首选访问方法)下,单击 File share(文件共享)。

通过创建空白解决方案,然后在其中添加项目,可以改善项目的长期可管理性和可搜索性。您也可以维持本地项目文件与它们在源代码管理服务器上的主控副本之间的紧密对称性。

创建解决方案目录

  1. File(文件)菜单上,指向 New(新建),然后单击 Blank Solution(空白解决方案)。
  2. New Project(新建项目)对话框中,键入解决方案的名称和位置。
    提示:选择一个可以将此项明确标识为解决方案的名称(例如 SalesWeb_SolutionSalesWeb_Soln)。

创建 Web 项目

  1. File(文件)菜单上,指向 Add Project(添加项目),然后单击 New Project(新建项目)。
  2. Add New Project(添加新项目)对话框中,从左侧窗格中选择 Visual Basic Projects(Visual Basic 项目)或 Visual C# Projects(Visual C# 项目)。
  3. 在右侧窗格中选择一个 Web 项目模板。
  4. Location(位置)框中,键入 http://localhost/projectname(其中 projectname 为新建项目的名称),然后单击 OK(确定)。

现在,您可以将该 Web 项目添加到源代码管理,以便您的队友在开发中使用。有关以下过程的概念性描述,请参阅将 Web 项目解决方案添加到源代码管理中时,会发生什么?

如果可能,请将项目添加到允许共享签出或多重签出的源代码管理数据库。有关详细信息,请参阅共享签出

将 Web 项目(及其解决方案)添加到源代码管理

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击解决方案节点,然后单击 Add Solution to Source Control(将解决方案添加到源代码管理)。
  2. 如果显示消息框,请单击 Continue(继续)。
  3. 按照源代码管理提供程序的要求提供数据库位置和用户登录信息。
  4. 通过指定解决方案文件的服务器位置,在源代码管理服务器上创建根解决方案目录。
  5. 在根解决方案目录下,键入项目文件夹的名称,该文件夹将包含 Web 项目文件的主控副本。
    注意:要在此解决方案中向源代码管理添加第二个项目及后续项目,请在更改完毕后签入解决方案。

要充分利用隔离开发模式的优点,在首次从源代码管理打开 Web 项目时,项目开发人员必须单独指定该项目工作副本的同一相对地址(http://localhost/projectname)。有关详细的步骤说明,请参阅首次打开现有 Web 项目

半隔离开发:创建源代码管理的 Web 项目

虽然半隔离开发模式比非隔离开发模式要好,但它不象隔离模式那样有助于协作开发。有关此模式的详细说明及其优缺点的概述,请参阅半隔离开发

选择 Web 访问方法

  1. Tools(工具)菜单上,单击 Options(选项)。
  2. Options(选项)对话框中,单击 Projects(项目)文件夹,然后单击 Web Settings(Web 设置)。
  3. Preferred access method(首选访问方法)下,单击 File share(文件共享)。

通过创建空白解决方案,然后在其中添加项目,可以改善项目的长期可管理性和可搜索性。您也可以维持本地项目文件与它们在源代码管理服务器上的主控副本之间的紧密对称性。

创建解决方案目录

  1. File(文件)菜单上,指向 New(新建),然后单击 Blank Solution(空白解决方案)。
  2. New Project(新建项目)对话框中,键入解决方案的名称和位置。
    提示:指定一个可以将此项明确标识为解决方案的名称(例如 SalesWeb_SolutionSalesWeb_Soln)。

创建 Web 项目

  1. File(文件)菜单上,指向 Add Project(添加项目),然后单击 New Project(新建项目)。
  2. Add New Project(添加新项目)对话框中,选择 Visual Basic Projects(Visual Basic 项目)或 Visual C# Projects(Visual C# 项目)。
  3. 在右侧窗格中选择一个 Web 项目模板。
  4. Location(位置)框中,键入 http://servername/projectname(其中 servername 是 Web 服务器的名称,projectname 是新建项目的名称),然后单击 OK(确定)。

现在,您可以将该 Web 项目添加到源代码管理,以便您的队友在开发中使用。

将 Web 项目添加到源代码管理

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击解决方案节点,然后单击 Add Solution to Source Control(将解决方案添加到源代码管理)。
  2. 如果显示消息框,请单击 Continue(继续)。
  3. 按照源代码管理提供程序的要求提供数据库位置和用户登录信息。
  4. 通过指定解决方案文件的服务器位置,在源代码管理服务器上创建根解决方案目录。
  5. 在根解决方案目录下,键入项目文件夹的名称,该文件夹将包含 Web 项目文件的主控副本。

至此,项目已准备就绪,可以进行开发。现在,每个项目开发人员都必须按照首次打开现有 Web 项目中介绍的一种步骤,从源代码管理打开该项目。

非隔离开发:创建源代码管理的 Web 项目

有关非隔离开发模式的说明及其优缺点的概述,请参阅非隔离开发。使用以下步骤创建源代码管理的 Web 项目,以进行非隔离开发。

选择 Web 访问方法

  1. Tools(工具)菜单上,单击 Options(选项)。
  2. Options(选项)对话框中,单击 Projects(项目)文件夹,然后单击 Web Settings(Web 设置)。
  3. Preferred access method(首选访问方法)下,单击 FrontPage

通过创建空白解决方案,然后在其中添加项目,可以改善项目的长期可管理性和可搜索性。您也可以维持本地项目文件与它们在源代码管理服务器上的主控副本之间的紧密对称性。

创建解决方案目录

  1. File(文件)菜单上,指向 New(新建),然后单击 Blank Solution(空白解决方案)。
  2. New Project(新建项目)对话框中,键入解决方案的名称和位置。
    提示:指定一个可以将此项明确标识为解决方案的名称(例如 SalesWeb_SolutionSalesWeb_Soln)。

创建 Web 项目

  1. File(文件)菜单上,指向 Add Project(添加项目),然后单击 New Project(新建项目)。
  2. Add New Project(添加新项目)对话框中,选择 Visual Basic Projects(Visual Basic 项目)或 Visual C# Projects(Visual C# 项目)。
  3. 在右侧窗格中选择一个 Web 项目模板。
  4. Location(位置)框中,键入 http://servername/projectname(其中 servername 是 Web 服务器的名称,projectname 是新建项目的名称),然后单击 OK(确定)。

现在,您可以将该 Web 项目添加到源代码管理,以便您的队友在开发中使用。

注意:如果您已经安装了 FrontPage Server Extensions 2002,以下某些步骤可能会略有不同。

为 FrontPage Web 项目打开外部源代码管理

  1. 右键单击“我的电脑”,单击 Manage(管理),然后单击 Services and Applications(服务和应用程序)。
  2. 打开 Internet Information Services(Internet 信息服务),然后展开 Default Web Site(默认 Web 站点)。
  3. 右键单击 FrontPage Web 项目所在的 Web,然后单击 Properties(属性)。
  4. Properties(属性)对话框中,单击 Server Extensions(服务器扩展)选项卡,将 Version Control(版本控制)框设置为 Use External(使用外部),然后单击 OK(确定)。
  5. 对于可能显示的所有警告消息,均单击 OK(确定)。

至此,项目已准备就绪,可以进行开发。现在,每个项目开发人员都必须按照首次打开现有 Web 项目中介绍的一种步骤,从源代码管理打开该项目。

首次打开现有 Web 项目

本节可以帮您确定如何从源代码管理打开 Web 项目,并确定保存工作副本的最佳位置(适用于文件共享 Web 项目)。回答下表中的问题并向其他项目开发人员咨询,以确定首次打开现有的、源代码管理的 Web 项目的最佳方法。

图 7:确定打开源代码管理的 Web 项目的方式

注意:对于正在打开文件共享 Web 项目(对第一个问题做出肯定回答)的开发人员而言,需要询问项目所有者保存工作副本的位置。对于隔离开发,请将其保存在 http://localhost/projectname 中。对于半隔离开发,请使用非本地主机 URL 保存工作副本。

隔离开发:首次打开 Web 项目

  1. File(文件)菜单上,单击 Source Control(源代码管理),然后单击 Open from Source Control(从源代码管理打开)。
  2. 在相应的源代码管理数据库中找到要打开的 Web 项目,然后单击 OK(确定)。
  3. 当系统提示您提供本地工作副本的位置时,键入 http://localhost/projectname,其中 projectname 与源代码管理的主控副本的名称相同。
    注意:下次打开该项目时,请不要使用 Open from Source Control(从源代码管理打开)命令,而应与打开任何其他项目一样使用 Open Project(打开项目)命令。

半隔离开发:首次打开 Web 项目

  1. File(文件)菜单上,指向 Source Control(源代码管理),然后单击 Open from Source Control(从源代码管理打开)。
  2. 在相应的源代码管理数据库中找到要打开的 Web 项目,然后单击 OK(确定)。
  3. 当系统提示您提供本地保存位置或工作副本位置时,键入 http://servername/projectname_myname,其中 servername 是共享 Web 服务器的名称,projectname 与源代码管理的主控副本的名称相同,_myname 是您的姓名或首字母缩写。
    注意:下次打开该项目时,请不要使用 Open from Source Control(从源代码管理打开)命令,而应与打开任何其他项目一样使用 Open Project(打开项目)命令。

非隔离开发:首次打开 Web 项目

  1. File(文件)菜单上,单击 Open(打开),然后单击 Project from Web(Web 项目)。
  2. 如果系统显示 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 服务器上的位置被复制到源代码管理服务器。

    如果解决方案包含多个项目,系统将提示您为每个项目指定一个不同的服务器位置。

  • 解决方案绑定   源代码管理提供程序将以无提示方式在工作文件夹的解决方案文件与源代码管理数据库中的主控副本之间创建绑定或关系。在此过程中,大多数源代码管理提供程序都会在工作文件夹的根目录上创建一个或多个数据文件,用以存储源代码管理信息。
  • 项目绑定   源代码管理提供程序将重复前面的过程。由于它的工作副本驻留在与解决方案工作副本不同的根目录下,因此源代码管理提供程序将创建一个单独的项目绑定。

下图说明了如何将项目的工作副本绑定到源代码管理下的主控副本。由于文件位于不同的根目录,因此需要为一个简单的解决方案 Web 项目对创建两个绑定。

图 8

从源代码管理打开 Web 项目解决方案时,会发生什么?

首次在 Visual Studio .NET 中从源代码管理打开文件共享 Web 项目时,会出现以下情况:

  • 为解决方案文件创建了绑定。   您的提供程序要求您识别用于解决方案文件的个人工作文件夹。此操作将在源代码管理数据库中的工作文件夹和它的主控副本之间创建一个关系或绑定。根据提供程序,此过程通常包括在工作文件夹的根目录创建数据文件。这些文件的默认位置为个人 Visual Studio 项目目录。
  • 解决方案文件被复制到工作文件夹。   您的源代码管理提供程序将在选定的工作文件夹中创建所有解决方案文件的工作副本。
  • 设置 Web 文件的位置。   Set Project Location(设置项目位置)对话框中,提供程序将提示您标识解决方案中每个 Web 项目的个人工作文件夹。此操作将在工作文件夹和它在源代码管理服务器上的主控文件夹之间创建另一个绑定。
  • 项目文件被复制到工作文件夹。   最后,源代码管理提供程序将在选定的工作文件夹中创建所有 Web 项目文件的工作副本。

一般提示、注意和指南

  • 创建空白解决方案,然后将您的项目添加到其中。这样做,可以按照项目文件在源代码管理数据库(主控副本)中的组织方式在磁盘(工作副本)上组织项目文件。强制实施并行组织方案可以提高项目文件的长期可管理性,并使其更易于执行某些高级源代码管理操作,如分支和合并。
  • 在同一 Web 服务器上将 ASP.NET 项目中的 Web 引用添加到 Web service 项目时,请使用绝对路径,例如 http://servername/WebService1。
  • 在将项目添加到源代码管理后,请不要改变项目的 Web 访问方法。
  • 首次从源代码管理打开 Web 项目时,请使用 File(文件)菜单的 Source Control(源代码管理)子菜单上的 Open From Source Control(从源代码管理打开)命令。以后,即可与任何非管理的 Web 项目一样,从本地磁盘打开项目:
    • 对于文件共享项目和 FrontPage Web 项目,请单击 File(文件),指向 Open(打开),然后单击 Project(项目)。
  • 要签出现有的源代码管理的文件共享 Web 项目,开发人员必须具有项目主控副本所驻留的 LAN 或 VPN 的访问权限。
  • 如果您要将膝上型计算机带回家在晚上使用,请务必在断开网络连接前签出要编辑的文件。千万不要通过 Visual SourceSafe 使用脱机签出。
  • 在开发 FrontPage Web 项目时,使用 Use External(使用外部)版本控制选项要优于使用 Built in(内置)选项。Use External(使用外部)可以提示 Visual Studio 将每个签入的版本保存到源代码管理数据库中,而 Built in(内置)则不提示。有关详细信息,请参阅非隔离开发
  • 尽可能允许共享签出
  • 在对包含 Web 项目的解决方案执行源代码管理操作时,如果可能,应当对整个解决方案执行此操作。例如,如果您要签出 ASP.NET Web 应用程序项目,请签出其解决方案。
  • 仅使用源代码管理提供程序的独立版本执行在 IDE 中无法完成的操作(例如,分支和合并分支)。
  • 使用动态 URL 引用。有关详细信息,请参阅附录 A:设置动态 URL Web 引用
  • 如果您的源代码管理提供程序为 Visual SourceSafe,那么只要可能,请始终使用 ANSI 编码保存 Web 页。
  • 不要将解决方案文件的工作副本存放到 IIS Web 服务器上。
  • 如果您使用 FrontPage 访问在服务器的 FAT 或 FAT32 分区上创建的 Web 应用程序,源代码管理将无法正常工作。由于 FAT 分区无法提供足够的安全环境,因此所有操作都将通过同一个访客帐户 IUSR_Machinename 来执行。这样,在您尝试执行签入或签出操作时,将导致您的文件错误地显示为以独占方式签出给了其他用户。通过在 IIS 管理工具中禁用对项目的匿名访问,可以解决这个问题,不过这种解决方法并不受支持。因此,强烈建议您将 FAT 分区转换为 NTFS 文件系统。

常见问题

用什么方法可以将我的 Web 应用程序部署到 Web?
从源代码管理获取最新版本,根据需要合并更改,签入您所做的更改,然后使用 Copy Project(复制项目)命令将所有项目文件的主控副本复制到相应的生产服务器位置。有关详细信息,请参阅附录 C:部署 Web 项目
每次项目位置发生变化时,我的团队怎样才能避免删除而后又添加项目的同一 Web 引用?
您可以将 Web 项目配置为接受动态 URL Web 引用。有关详细信息,请参阅附录 A:设置动态 URL Web 引用
在创建 Web 项目时,为什么会出现那么多对话框?为什么必须对项目位置设置两次?
您可能已经注意到,当您创建没有解决方案的新项目时,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 项目的第一步是更新源代码管理的主控副本。第二步是将项目文件复制到生产服务器。有关详细信息,请参阅部署 Web 项目
怎样才能象在 VID 中那样从源代码管理删除我的项目?
File(文件)菜单上,单击 Source Control(源代码管理),然后单击 Change Source Control(更改源代码管理)。在 Change Source Control(更改源代码管理)对话框中,从源代码管理选择要删除的项目,然后单击 Disconnect(断开连接)。
工作副本这一术语在 Visual Studio .NET 中的含意与在 VID 中的含意相同吗?
并不完全相同。在 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 应用程序更加易于测试、部署和管理。有关详细信息,请参阅 Introduction to Dynamic Properties(英文)。

以下步骤说明了在团队开发环境中,当引用调用项目所在的同一服务器上的 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 可动态配置与共享

  1. 在 Solution Explorer(解决方案资源管理器)中,展开 Web References(Web 引用)文件夹,并选择相应的服务。
  2. 在 Properties(属性)窗口中,将 URL Behavior(URL 行为)的值从 Static(静态)更改为 Dynamic(动态)。

    假定您的 Web service 返回某种类型的内容,Visual Studio 会自动将以下代码添加到项目的 Web.config 文件中:

    ' Visual Basic
    // C#
    <appSettings>
       <add key="WebApplication1.Server1.Service1" value=" 
       http://Server1/WS1/Service1.asmx" />
    </appSettings>

    在此示例中,关键字属性标识 Web 引用的名称,而值属性标识引用的目标。

  3. 在 Solution Explorer(解决方案资源管理器)中,右键单击 WebApplication1,指向 Add(添加),然后单击 Add New Item(添加新项)。
  4. Add New Item - WebApplication1(添加新项 - WebApplication1)对话框中,选择 Text File(文本文件)。
  5. Name(名称)框中,键入 User.config,然后单击 Open(打开)。
  6. 在 User.config 文件中,粘贴以下代码:
    <?xml version="1.0" encoding="utf-8"?>
       <appSettings>
          <add key="WebApplication1.Server1.Service1.asmx"
          value="http://localhost/ws1/Service1.asmx"/>
       </appSettings>
  7. 打开 Web.config,将 <appSettings> 更改为 <appSettings file="user.config">,然后删除 <appSettings> 开始和结束标记之间的所有代码。

现在,您已经拥有了一个个人配置文件,它将覆盖 Web.config 文件中的公共设置。

注意:如果您的项目受源代码管理,则应当右键单击 User.config 并单击 Exclude from Source Control(从源代码管理排除)。User.config 文件包含您的个人配置设置。

当另一个用户从源代码管理打开 WebApplication1 并尝试生成应用程序时,WS1 将显示为不可访问。此问题在于源代码管理的公共 Web.config 文件引用的是您的个人 WS1 工作副本的存储位置。要使 WS1 自动成为其他用户可访问的对象,请指示这些用户创建自己的个人配置文件(并确保不会将这些配置文件添加到源代码管理)。每一个打开您的 WebApplication1 项目的开发人员都必须执行以下步骤。

在团队中共享 Web 引用

  1. 在 Solution Explorer(解决方案资源管理器)中,右键单击 WebApplication1,指向 Add(添加),然后单击 Add New Item(添加新项)。
  2. Add New Item - WebApplication1(添加新项 - WebApplication1)对话框中,选择 Text File(文本文件)。
  3. Name(名称)框中,键入 User.config,然后单击 Open(打开)。
  4. 在 User1.config 文件中,粘贴以下代码。
    <?xml version="1.0" encoding="utf-8"?>
       <appSettings>
          <add key="WebApplication1.Server1.Service1.asmx"
          value="http://localhost/ws1/Service1.asmx"/>
       </appSettings>
  5. 打开 Web.config 文件,并将 <appSettings> 更改为 <appSettings file="user.config">

运行时在 Web services 间切换

动态 URL 除了使您能够更加方便地共享 Web 引用外,还使您能够迅速地在两个或多个 Web services 之间进行切换。动态属性存储在一个配置文件中,任何人都可以在运行时访问该文件。也就是说,您可以通过编辑公开使用且尚未编译的资源(User.config 文件),在运行时更改应用程序的行为。以下步骤是一个简短的演示。

运行时在 WS1 和 WS2 之间进行切换

  1. 在 WebApplication1 中,打开 WebForm1.aspx,然后将 Label 控件从工具箱拖放到设计器上。
  2. 双击设计器切换到代码视图,然后将下列代码粘贴到 Page_Load 事件处理程序:
    Server1.Service1 a = new localhost.Service1();
    Label1.Text = a.HelloWorld();
  3. 生成 WebApplication1。

    如果您执行了前面过程中的所有步骤,则可以看到 Hello World: WS1。

  4. 在代码编辑器打开 C:\Inetpub\wwwroot\WebApplication1\User.config。
  5. value="http:/localhost/ws1/Service1.asmx" 更改为 value="http:/localhost/ws2/Service1.asmx" 并保存更改。

下次运行 WebApplication1 时,就可以看到“Hello World: WS2”,而不是“Hello World: WS1”了。

附录 B:更改 Web 访问方法

更改项目的 Web 访问方法将从根本上改变您和您的团队伙伴在源代码管理下与主控副本进行交互的方式。建议将 FrontPage 项目升级为文件共享。只在绝对必要时,才将文件共享项目转换为 FrontPage Web 访问方法。在执行下列任何步骤之前,请确保您要更改的所有项目版本都已签入源代码管理中。

选择以下链接之一,进一步了解如何更改 Web 项目的 Web 访问方法:

从 Visual InterDev 项目升级到文件共享

您可以将源代码管理的 Visual InterDev (VID) Web 升级到 ASP.NET,以便使用文件共享 Web 访问方法从源代码管理进行访问。

注意:这一过程可以在源代码管理下有效地将您的 VID 项目分叉为两个项目。您仍然可以在项目的早期版本上查看历史记录和执行源代码管理操作,但只能通过在源代码管理中打开 VID 项目来完成。

从 Visual InterDev 项目升级到文件共享

  1. 打开 Visual Studio .NET,单击 Tools(工具),然后单击 Options(选项)。
  2. Options(选项)对话框中,单击 Projects(项目)文件夹,然后单击 Web Settings(Web 设置)。
  3. Preferred access method(首选访问方法)下,单击 File share(文件共享),然后关闭对话框。
  4. 在 Visual Studio .NET 的 File(文件)菜单上,指向 New(新建),然后单击 Project(项目)。
  5. New Project(新建项目)对话框中,在左侧窗格中选择一种语言(Visual Basic 或 C#),在右侧窗格中单击 ASP.NET Web Application(ASP.NET Web 应用程序),键入位置(例如 http://localhost/MyNewWeb),然后单击 OK(确定)。
  6. 最小化 Visual Studio .NET IDE,启动 Visual SourceSafe Explorer,然后打开包含 VID 项目文件的 SourceSafe 数据库。
  7. 打开您的 Web 项目文件夹,在 Contents(目录)窗格中选择所有源文件,指向 SourceSafe,然后单击 Get Latest Version(获取最新版本)。
  8. Get(获取)对话框中,以 ASP.NET Web 应用程序路径(例如 c:\inetpub\wwwroot\MyNewWeb)替换 To(到)框中的所有文本,选择 Make Writable(使可写),然后单击 OK(确定)。
  9. 在 Visual Studio .NET 中,选择您的项目,并在 File(文件)菜单上单击 Add Existing Item(添加现有项)。
  10. Add Existing Item(添加现有项)对话框中,打开 Web 项目的工作文件夹,选择刚刚从源代码管理复制的所有文件,然后单击 Open(打开)。
  11. 在 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 项目的源代码管理

  1. 右键单击“我的电脑”,单击 Manage(管理),单击 Services and Applications(服务和应用程序),打开 Internet Information Services(Internet 信息服务),然后展开 Default Web Site(默认 Web 站点)。
  2. 右键单击 FrontPage Web 项目所在的 Web,然后单击 Properties(属性)。
  3. Properties(属性)对话框中,单击 Server Extensions(服务器扩展)选项卡,将 Version Control(版本控制)框设置为 None(无),然后单击 OK(确定)。
  4. 对于可能显示的所有消息,均单击 OK(确定)。

现在,打开 Visual Studio .NET,将 Web 访问方法更改为文件共享,然后将项目重新绑定到源代码管理下的个人工作文件夹。

更改 Web 访问方法并重新绑定项目

  1. 在 IDE 的 File(文件)菜单上,指向 Open(打开),单击 Project from Web(Web 项目),输入您的 Web 项目的 URL,然后单击 OK(确定)。
  2. 在 Solution Explorer(解决方案资源管理器)中,右键单击该项目,然后单击 Properties(属性)。
  3. Project Properties(项目属性)对话框的 Common Properties(公共属性)下,选择 Web Settings(Web 设置),然后将 Web Access Mode(Web 访问模式)的值更改为 File Share(文件共享)。
  4. 在 Visual Studio 中,先关闭 Web 项目及其解决方案,然后重新打开。
  5. 在 Solution Explorer(解决方案资源管理器)中,选择该项目,在 File(文件)菜单上指向 Source Control(源代码管理),然后单击 Change Source Control(更改源代码管理)。
  6. Change Source Control(更改源代码管理)对话框中,选择您的项目,单击 Bind(绑定),然后单击 OK(确定)。对于显示的所有警告消息,均单击 OK(确定)。
    注意:您必须将解决方案和项目重新绑定到它们先前的保存位置,以保持源代码管理历史记录的连续性。
  7. 在 Solution Explorer(解决方案资源管理器)中,右键单击该项目,单击 Check Out(签出),对于随后显示的警告消息,单击 OK(确定)。
  8. 当显示“Your folder contains a writable copy of project path”(您的文件夹包含 project path 的可写副本)消息时,请选择 Leave this file(保留此文件),然后单击 OK(确定)。
  9. 在 Solution Explorer(解决方案资源管理器)中,右键单击该项目,然后单击 Check In(签入)。

将文件共享项目转换为 FrontPage

在将文件共享 Web 项目转换为 FrontPage Web 访问方法之前,请认真考虑替代方案。转换为 FrontPage,可以:

  • 访问由 .NET Passport 身份验证保护的设计时项目资源。
  • 连接到或允许访问防火墙后的项目,包括一个或多个团队成员无法通过 LAN 或 VPN 访问的项目。

从文件共享转换为 FrontPage Web 访问方法

  1. 在 Solution Explorer(解决方案资源管理器)中选择 ASP.NET Web 项目。
  2. File(文件)菜单上,指向 Source Control(源代码管理),然后单击 Change Source Control(更改源代码管理)。
  3. Change Source Control(更改源代码管理)对话框中,选择您的 Web 项目,然后单击 Unbind(取消绑定)。
  4. Change Source Control(更改源代码管理)列表中的每一项都重复此步骤,接受显示的所有消息,然后单击 OK(确定)。
  5. 在 Solution Explorer(解决方案资源管理器)中,右键单击要转换的 Web 项目,然后单击 Properties(属性)。
  6. Project Properties(项目属性)对话框中的 Common Properties(公共属性)下,选择 Web Settings(Web 设置),然后将 Web Access Mode(Web 访问模式)的值更改为 FrontPage
  7. 选择解决方案,并在 File(文件)菜单上,单击 Close Solution(关闭解决方案)。

现在,您可以为 FrontPage Web 启用源代码管理。以下过程中的某些步骤可能与 FrontPage Server Extensions 2002 中的步骤有所不同。

为 FrontPage Web 项目打开外部源代码管理

  1. 右键单击“我的电脑”,单击 Manage(管理),然后单击 Services and Applications(服务和应用程序)。
  2. 打开 Internet Information Services(Internet 信息服务),然后展开 Default Web Site(默认 Web 站点)节点。
  3. 右键单击 FrontPage Web 项目所在的 Web,然后单击 Properties(属性)。
  4. Properties(属性)对话框中,单击 Server Extensions(服务器扩展)选项卡,将 Version Control(版本控制)框设置为 Use External(使用外部),然后单击 OK(确定)。
  5. 对于可能显示的所有警告消息,均单击 OK(确定)。

附录 C:部署 Web 项目

Visual Studio .NET 提供了多种功能强大的部署工具,包括 Web 设置和部署项目。以下过程介绍了一种简单方法,可以将主控副本(位于源代码管理数据库)中的更改推广到其生产服务器位置。有关其他 Visual Studio .NET 部署替代方案的详细信息,请参阅 Methods of Deployment(英文)。

对于 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 项目

  1. Project(项目)菜单上,单击 Copy Project(复制项目)。
  2. 选择目的地项目文件夹和服务器。
  3. 单击 FrontPage 按钮。
    注意:在此环境中,FrontPage 是默认的选项,也是建议使用的选项。如果您使用 File share(文件共享)选项,请使用以下语法设置 Path(路径):\\servername\wwwroot$\projectname。
  4. 选择要复制的文件。

默认选项只部署运行应用程序所需的文件。您还可以部署所有项目文件或项目文件夹中的所有文件。

其他信息

XML Web Services Infrastructure(英文)

Team Development Guide(英文)

Walkthrough: Deploying a Web Solution(英文)

Upgrading Visual InterDev 6.0 Applications to Visual Studio .NET(英文)

Converting ASP to ASP.NET(英文)

Migrating to Web Forms(英文)

准备将 Visual Basic 6.0 应用程序升级到 Visual Basic.NET

使用 Visual Studio .NET 开发 Web 项目的远程服务器配置

Deployment Changes in Visual Basic .NET(英文)

Authentication in ASP.NET: .NET Security Guidance(英文)

posted on 2006-02-06 11:51 阅读(903) 评论(0)  编辑 收藏 引用 所属分类: 技术类
只有注册用户登录后才能发表评论。