使用了源代码管理的网站文件

更新:2007 年 11 月

在使用源代码管理时,在网站中处理的有些文件需要特殊处理。

Web.config 文件

由于 Web.config 文件是应用程序范围的配置设置的中央存储区,与单个页相比,该文件更可能同时被多个开发人员签出。只要不同的开发人员不同时更改同一设置,源代码管理系统的合并功能就能在签入过程中合并更改。

Web.config 文件可以手动打开进行编辑。这种情况下,对文件进行编辑时,可以和处理 ASP.NET 页一样,首先显式地签出该文件或使用隐式签出。此外,Visual Web Developer 中的一些实用工具也可以更改 Web.config 文件。例如,如果使用 Visual Web Developer**“添加引用”对话框创建对客户端项目、Web 服务或全局程序集缓存 (GAC) 中的程序集的引用,新创建的引用则存储在 Web.config 文件中。大多数情况下,Visual Web Developer 会根据需要自动签出 Web.config 文件。例如,如果向 Web 应用程序添加一个新引用,并且 Web.config 文件没有签出,则“添加引用”**命令将签出 Web.config 并添加该引用。

但是,并非影响 Web.config 文件的每个进程都会自动签出该文件。下面是编辑应用程序的配置之前要求签出 Web.config 文件的实用工具的列表:

  • 网站管理工具(网站菜单上的**“ASP.NET 配置”**命令)不会自动签出 Web.config 文件。如果尝试在网站管理工具中保存更改而不先签出 Web.config 文件,该工具将显示一个错误,指示 Web.config 文件是只读的。解决办法是在使用网站管理工具之前显式地签出 Web.config 文件。

  • ASP.NET MMC 管理单元不会自动签出 Web.config 文件,如果试图在签出该文件之前保存配置更改,则会显示一个错误。

Web.config 文件的加密节

如果 Web.config 文件配置了加密节,则不能再进行合并。在合并之前应解密配置设置。

有关加密 Web.config 文件节的详细信息,请参见使用受保护的配置加密配置信息

Global.asax 文件

与 Web.config 一样,Global.asax 文件存储的也是应用于整个网站的信息,该文件位于网站的根目录中。具体地说,Global.asax 文件包含为应用程序或会话引发的事件的事件处理代码。通常,多个开发人员可以安全地签出 Global.asax 文件,在签入时可以使用源代码管理提供程序的合并功能来解决冲突。

资源文件

资源 (.resx) 文件以 XML 格式存储信息。资源文件可以是页范围的本地资源文件,也可以是 Web 应用程序范围的全局资源文件。本地页资源文件存储在 App_LocalResources 文件中,所使用的名称是基于其关联页的名称的。例如,页 Default.aspx 的对应本地资源文件称为 Default.aspx.resx。全局资源文件存储在 App_GlobalResources 文件中。可以向这些文件指定任何名称,只要名称包含 .resx 文件扩展名即可。

本地资源文件不会在签出页时自动签出。因此,进行编辑之前,必须显式或隐式签出对应的资源文件。全局资源文件的处理与此类似,只是开发人员之间争用的可能性更大。在签出依赖全局资源文件的页之前,请检查源代码管理以确定其他人是否已签出该全局资源文件。

这两种情况下,由于资源文件是 XML 格式,签入期间的冲突可通过合并来解决。

应用程序服务数据库

如果使用 ASP.NET 成员资格、角色管理或配置文件,这些服务的应用程序信息则存储在数据库中。默认情况下,数据库是 Web 应用程序范围的本地数据库,在 Web 应用程序的 App_Data 文件夹中存储为数据库文件。这些服务还需要 Web.config 文件中的项。有关更多信息,请参见为 SQL Server 创建和配置应用程序服务数据库

如果网站进行了源代码管理,将应用程序数据存储在本地数据库中可能导致问题,原因如下:

  • 在本地调试应用程序时,每个开发人员都必须签出数据库文件。不能使用数据库文件的只读版本调试应用程序;使用只读数据库文件会导致运行时错误。

  • 数据库在源代码管理储存库中存储为二进制文件。因此,如果多个开发人员签出数据库文件,源代码管理系统则无法合并更改。而每个开发人员的签入操作都会改写前一版本。

在处理进行了源代码管理的 Web 应用程序时,最好使用未进行源代码管理的共享数据库文件来存储应用程序服务数据。例如,可以使用运行 Microsoft SQL Server 的中央服务器来存储应用程序数据。这样,所有开发人员使用的都是当前的实时数据。还可以使用数据库的备份功能来管理应用程序数据。有关为应用程序数据选择数据库的详细信息,请参见为 SQL Server 创建和配置应用程序服务数据库

程序集文件

可以将程序集(.dll 文件)添加到网站的 Bin 文件夹中,然后在代码中引用这些程序集。除非要使用较新的版本改写 .dll 文件,否则不要将其签出。

如果两个或更多开发人员同时更改该二进制 .dll 文件,源代码管理系统则无法合并更改。因此,如果要更新文件并将其再次签入,最好不要允许对 .dll 文件进行多重签出。在签出期间可以设置一个选项,以防止其他人在文件签出后再进行签出。

对客户端项目或类库项目的引用

在处理 Web 应用程序时,可以向解决方案添加客户端项目或类库项目,并在库项目中创建可编译的组件。然后,可以在 Web 应用程序中创建项目到项目的引用,以引用库项目的编译输出。例如,在创建类库项目时,可以在项目中使用实用工具类或自定义控件创建程序集,然后在 Web 应用程序中引用这些程序集。

创建对另一个项目的引用时,Visual Web Developer 从该项目(如果存在)复制编译输出。因此,需要先生成一个项目,然后才能从另一个项目创建对它的引用。客户端项目的编译输出不进行源代码管理;因此,开发人员不必担心会删除旧版本的二进制文件,也不必担心会生成和改写进行了源代码管理的版本。

请参见

概念

网站源代码管理概述

其他资源

为 SQL Server 创建和配置应用程序服务数据库