Mark White
Microsoft Corporation
2001 年 9 月
摘要:本文提供了如何在团队开发环境中使用 Visual Studio .NET Beta 2 的指导。本文假设需要由多个开发人员开发同一个项目,并且他们使用 Visual SourceSafe 进行源代码控制。
目录
简介
设置文件共享访问模式
在 Visual SourceSafe 内创建项目
从 Visual SourceSafe 访问项目
修改文件
公布更改
获取最新版本
脱机工作
提示与技巧
Visual Studio .NET Beta 2 中的问题
总结
简介
在 Microsoft® Visual Studio® .NET Beta 2 中进行 Web 应用程序团队开发的推荐方法是基于“文件共享”访问模式。每个开发人员使用的都是各自虚拟根目录中的文件副本,但所有用户都需要从中央 Microsoft® Visual SourceSafe® 项目签入和签出文件。该方法具有隔离功能,防止某个团队成员的更改影响整个团队的工作副本。
该方法与 Microsoft® Visual InterDev® 6.0 采用的方法不同,后者使用 Microsoft® FrontPage® Web 访问。文件共享 Web 访问是 Visual Studio .NET Beta 2 的默认访问模式,并推荐在团队开发中使用。
Visual SourceSafe 集成与 Visual Studio .NET 共同工作的方式和它与 Visual Studio 6.0、Microsoft® Visual C++® 和 Microsoft® Visual Basic® 项目共同工作的方式很相似。开发人员可以在本地创建自己的项目(如果使用 http://localhost),并可以从一个公用 Visual SourceSafe 项目进行签入签出。这点也与 Visual InterDev 6.0 不同,后者需要团队的所有开发人员都在中央服务器的同一个虚拟根目录下工作。
本文中的讨论以 Web 应用程序的开发为例,但此方法同样适用于在 Visual Studio .NET Beta 2 中开发非 Web 应用程序。
请注意,将应用程序适当地划分为多个独立的项目以及使用 ASP.NET 用户控制、HTTP 模块和类库都是进行团队工作的有效方法。
设置文件共享访问模式
如上所述,在 Visual Studio .NET Beta 2 中,文件共享是默认访问模式。若要确认访问模式的设置是否正确,请单击“Tools”菜单上的“Options”,单击“Projects”,再单击“Web Settings”。然后将“Preferred”访问模式设置为“File Share”,再单击“OK”。这样 Web 项目就可以添加到 Visual SourceSafe。
如果现有项目使用 FrontPage 访问模式,可以将访问模式更改为“文件共享”。请打开 Solution Explorer,用鼠标右键单击项目,然后单击“Properties”。单击“Common Properties”,然后单击“Web Settings”。将“Web Access Mode”设置为“File Share”,然后单击“OK”。现在,请保存、关闭并重新打开解决方案,使项目设置的更改生效。
本文的后面部分假设您正在使用“文件共享”访问模式。
在 Visual SourceSafe 内创建项目
第一个团队成员创建一个包含一个或多个项目的解决方案。(由于使用了文件共享访问,如果您要在其他计算机上创建项目,则仍要将项目位置指定为 http://myserver,但您需要通过通用命名约定 (UNC) 来访问 \\myserver\c$\inetpub\wwwroot 或 \\myserver\wwwroot$。)解决方案准备就绪,可供其他团队成员开始使用时,第一个团队成员应在 Solution Explorer 内用鼠标右键单击解决方案或项目文件,然后选择“Add Solution to Source Control”。另外,第一个团队成员也可以在“File”菜单上,单击“Source Control”,然后单击“Add Solution to Source Control”。
如果解决方案包含使用文件共享访问模式的 Web 项目,则会出现以下警告。
图 1:文件共享警告对话框
可以忽略该警告。单击“Continue”。
集成开发环境 (IDE) 将提示您指定 Visual SourceSafe 数据库服务器,然后要求您指定要将解决方案文件和该解决方案的各个项目存储在 Visual SourceSafe 中的位置。
Visual Studio .NET 内的默认行为是以“Admin user”(管理员用户)的身份将用户登录到默认的 Visual SourceSafe 数据库(通常称为“公用”)。默认用户名和密码由 Visual SourceSafe 提供。由于默认管理员用户口令为空,所以将解决方案添加到 Visual SourceSafe 时可能不会提示您指定 Visual SourceSafe 数据库服务器,而可能自动将您登录到默认 Visual SourceSafe 数据库,并直接显示“Add to SourceSafe Project”对话框。默认情况下,将显示登录对话框。(Visual SourceSafe 的新版本,包括版本 6.0c 的测试版,关闭了登录对话框。Visual SourceSafe 6.0c 的最后发行版将打开该对话框并设为默认设置。)
若要避免此问题,请在“Tools”菜单上,单击“Options”,单击“Source Control”,然后单击“SCC Provider”。将登录 ID 更改为适当的用户。单击“Advanced”,并单击“Integration”选项卡。在“Choose SourceSafe Database”下,选择“Prompt”。
图 2:将项目添加到 Visual SourceSafe
此外,还会通过同一对话框,提示您指定用于存储解决方案内包含的每个项目的 Visual SourceSafe 位置。要重新设置,第一次提示时,您可以为该解决方案以及同一驱动器上的所有非 Web 项目设置 Visual SourceSafe 位置。接下来,将提示您提供 Visual SourceSafe 的位置供解决方案内的每一个 Web 项目使用。如果您不想将某个项目添加到 Visual SourceSafe 中,请单击“Cancel”然后使用“Add selected projects to source control”,这样可控制要添加的项目。本文将在稍后说明将所选的项目添加到源代码控制中。Solution Explorer 将已取消的项目显示为签出,但是项目文件不在 Visual SourceSafe 内。在此情况下,签出标识符将用来表示该项目不添加到 Visual SourceSafe 中。
设置 Visual SourceSafe 位置时,可以将解决方案文件和项目放置到同一 Visual SourceSafe 文件夹或者多个单独的文件夹中。最好让 Visual Studio.NET 控制您所有的非 Web 项目的放置。然而,每个 Web 项目应放置到各自的文件夹中以确保该项目不与其他 Web 项目冲突。很可能几个项目会包含同名文件(例如,WebForm1.aspx)。如果试图在同一 Visual SourceSafe 文件夹中放置多个项目,并且该文件夹中已存在同名文件,则会出现以下对话框,如图 3 所示:
图 3:试图将相同文件添加到 Visual SourceSafe 项目时出现的警告对话框
单击“Select different location”,然后如前所述继续操作。
如果要在已添加到 Visual SourceSafe 的解决方案中添加新项目或不在 Visual SourceSafe 内的现有项目,请先将项目添加到该解决方案。然后,在 Solution Explorer 内用鼠标右键单击该解决方案,并执行以下任一操作:
单击“Add”,然后单击“New Project...”
或者,单击“Add”,然后单击“Existing Project...”
Solution Explorer 将以签出形式显示该项目,但文件不在 Visual SourceSafe 中。现在,在 Solution Explorer 中选择项目,并在“File”菜单上,单击“Source Control”。最后,单击“Add Selected Projects to Source Control...”,这将要求您指定在 Visual SourceSafe 中存储项目的位置,如前所述。对于非 Web 项目,最好使用“File“菜单下的“Check In”命令由 Visual Studio.NET 控制 Visual SourceSafe 位置。
从 Visual SourceSafe 访问项目
每个团队成员第一次从 Visual Source Safe 访问项目时,必须进行如下操作:在“File”菜单上,单击“Source Control”,然后单击“Open Project From Source Control”。
IDE 将提示该团队成员指定 Visual SourceSafe 数据库服务器,并要求团队成员选择 Visual SourceSafe 项目,以及指定要复制解决方案文件和所有非 Web 项目的本地文件夹。在我的示例屏幕拍图(图 4)中,我已经打开 MyWebProjects 并将解决方案文件保存到 D:\Documents and Settings\marwhite\My Documents\Visual Studio Projects。
图 4:设置 Visual SourceSafe 项目的本地文件夹位置
默认情况下解决方案文件会复制到 C:\Documents and Settings\<您的用户名>\My Documents\Visual Studio Projects。您可以通过以下操作重新进行配置:在“Tools”菜单上,单击“Options”,单击“Environment”,然后单击“Projects and Solutions”。
如果解决方案文件和任何项目文件存储在多个单独的文件夹中,则不会显示以下对话框。但是,如果解决方案和项目文件存储在同一 Visual SourceSafe 位置,则 IDE 会提示用户选择解决方案文件。
图 5:选择解决方案文件
此时,如果解决方案包含一个或多个文件共享 Web 项目,则会显示“Set Project Location”对话框。
图 6:“Set Project Location”对话框
必须对每个 Web 项目使用此对话框以指定各个独立网站的位置。可以将 Web 项目放置到一个服务器上。例如:http://myserver/myproject_myroot。或者,将 Web 项目放置到您的本地计算机上。例如:http://localhost/myproject。Visual Studio 将为每个独立的 Web 项目创建一个虚拟根目录。
注意:如前所述,只需在第一次使用时访问解决方案。(在“File”菜单上,单击“Source Control”,然后单击“Open Project From Source Control”。)下次打开解决方案时,必须使用本地磁盘上的解决方案文件。请不要从 Web 服务器或 Visual SourceSafe 打开应用程序。
如果要将 Visual SourceSafe 内现有的项目添加到解决方案,请执行下列操作:在“File”菜单上,单击“Source Control”,然后单击“Add Project From Source Control...”,IDE 将显示如前所述的对话框。
修改文件
当团队成员处理自己的代码时,其工作方式与通常的工作方式完全一样。修改文件时,开发环境会自动提示团队成员将其签出。请注意,在项目中添加和删除文件需要签出项目文件。
公布更改
需要向团队公布新更改的团队成员会对源代码进行更改、测试和调试。更改完成后,可以选择文件,单击鼠标右键,然后单击“Check In”,或者在“File”菜单上,单击“Source Control”,然后单击“Check In”。然后,这些更改就会显示在 Visual SourceSafe 内。
获取最新版本
团队成员要获得团队的最新更改,应在 Solution Explorer 中选择解决方案文件,单击鼠标右键,然后单击“Get Latest Version (Recursive)”。团队成员需要生成应用程序的最新版本时,也应执行该过程。
脱机工作
Visual Studio .NET Beta 2 相对于 Visual Studio .NET Beta 1 的重大改进之一是脱机工作。脱机工作对许多开发人员来说非常重要,尤其是对于大部分时间在办公室外和/或旅途中的开发人员。
脱机工作允许团队成员将与 Visual SourceSafe 集成的解决方案和项目设置成脱机。也就是说,团队成员可以在与自己的公司网络和 Visual SourceSafe 数据库断开连接时处理文件。当团队成员返回办公室后,可以重新连接解决方案和项目,IDE 可使其副本与 Visual SourceSafe 数据库中保留的副本之间的更改保持同步。
进入脱机状态
若要使解决方案及其项目脱机,请在“File”菜单上,单击“Source Control”,然后单击“Change Source Control...”。IDE 将显示以下对话框:
图 7:连接和断开解决方案项目与 Visual SourceSafe 之间的连接
清除“Connected”复选框即可使解决方案和项目脱机。
请注意,在脱机之前已被您签出的文件仍保留为您签出的状态。若要避免可能发生的数据丢失现象,最好在脱机之前签出要脱机处理的文件。
脱机时签出文件
在脱机工作时,可以通常方式签出文件。脱机工作状态下第一次签出文件时,会显示以下对话框:
图 8:在断开连接时签出文件
需要取消此对话框(图 8 中)才能启用脱机签出。请选择“Don't show this dialog again”,然后单击“Check out (disconnected)”。将显示如图 9 所示的另一个错误对话框。可以忽略此对话框;单击“OK”。
图 9:断开连接状态下第一次签出文件时显示的错误对话框
下次试图在脱机工作状态下签出文件时将成功签出。请注意,上述的其他错误对话框是 Visual Studio .NET Beta 2 中的小错误,将在最终版本中解决。
当团队成员在脱机状态下签出文件时,已签出的文件的详细信息将存储为项目的一部分,并且已签出的文件将标记为读/写。
脱机时签入文件
不可能在脱机时签入文件;因为您未连接到网络,签入命令未启用。这是故意设置的,这样可以在项目重新联机时方便地查看哪些文件在脱机时被签出。
进入联机状态
这与进入脱机状态基本上相同。若要使解决方案及其项目联机,请在“File”菜单上,单击“Source Control”,然后单击“Change Source Control...”。显示的对话框与进入脱机状态时相同。选择“Connected”即可使解决方案和项目联机。
同步更改
若要使脱机工作时所做的更改与 Visual SourceSafe 数据库中包含的解决方案和项目文件同步,需要从 Visual SourceSafe 中签出脱机工作时签出的每个文件,并将更改过的文件副本签入 Visual SourceSafe。
进入联机状态后,将对每个在脱机状态下签出的文件显示以下两个对话框:
图 10:协调断开连接状态下签出的文件
首先,单击“Check out”(如图 10 所示)。
图 11:从 Visual SourceSafe 签出文件
选择“Leave this file?”可防止您的修改被 Visual SourceSafe 中包含的版本覆盖。然后,需要签入您修改后的文件。
警告:如果其他人签入了此文件,然后您又签入了相同文件,则将覆盖其他人所作的变更。
注意:这些对话框仅对您在脱机状态下签出的文件显示,而不会对进入脱机状态之前已签出的文件显示。练习警告,如第一个对话框所指出的,可能会丢失数据。
您在脱机工作时,如果签出一个文件,而另一个团队成员也签出、修改和签入了同一文件,则必须非常谨慎,否则您的签入将覆盖该团队成员的修改。最安全的选择是避免脱机文件签出。总是在脱机前签出您要处理的文件。如果无法做到这一点,或您忘记了在脱机前签出了所有要处理的文件,则在同步更改时手动合并文件。
如果您在脱机工作时签出了一个文件,而另一个用户也签出了同一文件,则当您使解决方案和项目联机时,会显示以下对话框:
图 12:试图签出已签出的文件时显示的警告
单击“OK”。在 Solution Explorer 中,此文件旁会显示一个小警告符号,表示该文件仍需注意。
最后,如果您在脱机状态下将文件添加到项目,则使项目联机时,只需将新文件签入 Visual SourceSafe 即可。
提示与技巧
URL 一致
所有的开发人员最好使用统一的虚拟根目录,例如 http://localhost/projectName。尽量避免使用特定的服务器名称,因为这可能使用户难以共享项目文件。如果需要使用特定服务器名称,请在 web.config 文件内定义一个新的 <configSections>,并用它定义应用程序的自定义设置。如果您在使用 Web 引用,则将 Web 服务放在本地并使用 http://localhost/webServiceName 作为 Web 引用,或将 Web 引用 URL 行为设置为动态。动态 URL 行为将在稍后说明。
引用路径一致
将引用添加到一个非系统程序集时,IDE 会将程序集本地复制到项目(对于 Web 应用程序,程序集将被复制到 bin 目录)。若要控制程序集是否进行本地复制,请用鼠标右键单击程序集,然后单击“Propertities”。对于非系统程序集,“Copy Local”应设置为“True”。这是默认值,推荐在大多数情况下使用。
当添加引用时,IDE 还会更新用户项目文件内的引用路径,以指出程序集的实际位置。用鼠标右键单击项目,然后单击“Propertities”。单击“Common Properties”,然后单击“References Paths”。在对话框中(如图 13 所示),单击“Cancel”。
图 13:显示引用路径
尽管引用路径显示为项目的一个属性,实际上它对于设置了该属性的项目、计算机和用户来说是特有的。这就意味者,如果开发人员 1 将引用添加到程序集并签入了项目文件,则当开发人员 2 获得项目文件的最新版本时,程序集将显示在 Solution Explorer 内——但是生成很可能会失败,因为开发人员 2 可能不具有相同的引用路径。
要避免此问题,团队的所有开发人员应该在团队内部使用统一的引用路径。这样,只要符合以下条件,则某开发人员添加引用后其他开发人员就无需对解决方案或项目文件进行任何操作:
引用路径已经设置,对每个项目任务只需设置一次
引用的程序集已存在于硬盘上,并且位置正确
该方法要求定义一个标准的生成输出位置,并使所有的引用都引用该位置内的程序集。如果该条件太严格,可以在引用路径内包含用逗号分隔的多个路径。
添加 Web 引用
这也是 Visual Studio .NET Beta 2 相对于 Visual Studio .NET Beta 1 的改进之一。
在您的项目所在的文件夹内,存在一个 Web References 文件夹。添加 Web 引用时,会在 Web References 文件夹下创建一个新文件夹。该新文件夹根据托管 Web 服务的服务器命名,并包含 WSDL、DISCO 和生成的 Web 服务客户端代理。该文件夹名称还用作 Web 服务客户端代理的名称空间。
添加 Web 引用时,这些文件夹和文件将添加到 Visual SourceSafe 项目。更新 Web 引用时,还将签出、更新和签入这些文件。(用鼠标右键单击 Web 引用,然后单击“Update Web Referemce”。)
添加 Web 引用时,Web 服务 URL 在 Web 服务客户端代理内被硬编码。但是,可以更改 Web 服务客户端代理的行为,使它从 .config 文件读取 Web 服务 URL。请用鼠标右键单击 Web 引用,单击“Properties”,并将“URL Behavior”从“Static”更改为“Dynamic”。
图 14:Web 引用属性
下列代码将被添加到 .config 文件:
<configuration>
<appSettings>
<add key="WinApp1.localhost.Service1" value="http://localhost/WebServiceTest/Service1.asmx" />
</appSettings>
</configuration>
……