向服务器添加文件

当使用解决方案资源管理器并且您的项目受版本控制时,将文件添加到版本控制的操作通常是自动进行的。 但在某些情况下,您必须执行一些额外步骤才能将项目添加到版本控制。

提示

在将文件添加到版本控制之前,应该先在开发计算机上设置工作区

你希望做什么?

  • 在版本控制下创建新的代码项目和解决方案

  • 将现有解决方案和代码项目置于版本控制之下

  • 将一个或多个文件添加到版本控制

  • 利用您的代码不会生成的第三方二进制文件

  • 自定义版本控制忽略的文件

  • 从命令提示符处工作

在版本控制下创建新的代码项目和解决方案

您可以同时创建新的团队项目并将其添加到版本控制,让您和您的团队可以从编写第一行代码开始就立即享受版本控制带来的所有好处。

“新建项目”对话框

  1. 在 Visual Studio 中,如果尚未这样做,则连接到团队项目

  2. 选择**“文件”“新建”“项目”**(键盘:Ctrl + Shift + N)。

    此时将出现“新建项目”对话框。

  3. 选择要创建的代码项目的类型。

  4. 在**“名称”**框中,指定代码项目的名称。

  5. 如果出现**“解决方案”列表,请确保选中“创建新解决方案”**。

  6. 在**“位置”**列表中,在您设置开发计算机时创建的工作区中指定合适的本地工作文件夹的路径(例如 c:\code\SiteApp\Main\)。

    确保选中**“创建解决方案的目录”“添加到源代码管理”**复选框。

  7. 选择**“确定”**,创建代码项目,您随后可在解决方案资源管理器(键盘:Ctrl + Alt + L)中查看它。

    在解决方案资源管理器中新建代码项目

  8. 在**“解决方案资源管理器”中,打开您创建或修改的解决方案的上下文菜单,然后选择“签入”**以提交挂起的更改

将现有解决方案和代码项目置于版本控制之下

要向版本控制添加现有解决方案,应将所有的解决方案文件移入您的工作区,然后添加它们。

备注

请避免使用“将解决方案添加到源代码管理”对话框将您的解决方案上载到版本控制,而应执行以下过程。

  1. 在 Visual Studio 中,如果尚未这样做,则连接到团队项目

  2. 选择**“视图”“其他窗口”“源代码管理资源管理器”**。

  3. 在源代码管理资源管理器中,导航到您的解决方案的逻辑父文件夹,例如 $/SiteApp/Main,其中 SiteApp 是团队项目的名称。 为什么这是一个完好的父文件夹?

  4. 选择**“本地路径”**旁边的链接以在 Windows 资源管理器(Windows 8 中的文件资源管理器)中打开父文件夹。

    如果链接文本是“未映射”,我该怎么办

  5. 将包含您的解决方案的文件夹移动到父文件夹中。

  6. 在 Visual Studio 中,选择**“文件”“打开”“项目/解决方案”,然后使用“打开项目”**对话框打开解决方案。

  7. 在解决方案资源管理器(键盘:Ctrl + Alt + L)中,选择解决方案,打开其上下文菜单,然后选择**“将解决方案添加到源代码管理”**。

  8. 在解决方案资源管理器中,选择解决方案,打开其上下文菜单,然后选择**“签入”**。

  9. 在团队资源管理器中,将出现**“挂起的更改”**页。

  10. 是否有任何**“检测到的更改”显示在“排除的更改”**部分?

    • **否:**跳到下一步。

    • **是:选择“检测到的更改”链接。 将出现“提升候选更改”对话框。 此对话框中列出的文件未由您的解决方案中的任何代码项目引用。 如果您的团队需要这些文件,请确保选中它们,然后选择“提升”以将它们移到“挂起的更改”页的“包含的更改”**部分。 有关详细信息,请参阅向团队的代码库签入工作成果

  11. 准备就绪之后,提交挂起的更改

将一个或多个文件添加到版本控制

当您使用解决方案资源管理器将文件添加到代码项目时,系统会自动将其添加到版本控制。 但是,您还可以添加您的代码项目未引用的文件。

提示

如果您在创建自动进程或更喜欢使用命令提示符,则可以使用 Add 命令而不是执行以下过程。

自动将一个或多个文件添加到版本控制

如果您在使用本地工作区,**“挂起的更改”**页将自动检测新文件。

  1. 在 Visual Studio 中,如果尚未这样做,则连接到团队项目

  2. 选择**“视图”“其他窗口”“源代码管理资源管理器”**。

  3. 在源代码管理资源管理器中,导航到要在其中添加文件或文件夹的文件夹。

  4. 选择**“本地路径”**旁边的链接以在 Windows 资源管理器(Windows 8 中的文件资源管理器)中打开目标文件夹。

    将您的文件和文件夹移到此文件夹。

    如果链接文本是“未映射”,我该怎么办

  5. 在 Visual Studio 的团队资源管理器中,选择**“挂起的更改”**。

  6. 在**“挂起的更改”页上,选择“排除的更改”部分的“检测到的更改”**。

  7. 在**“提升候选更改”对话框中,确保只选择了要签入的文件,然后选择“提升”**。

  8. 提交挂起的更改

将文件手动添加到版本控制

您还可以将文件手动添加到版本控制。

  1. 选择**“视图”“其他窗口”“源代码管理资源管理器”**。

  2. 在源代码管理资源管理器中,导航到要在其中放置文件的文件夹。

    重要

    确保在继续前签入此文件夹。如果要立即创建文件夹,请打开其上下文菜单,选择“签入”,然后在继续之前签入新文件夹。

  3. 将文件夹或文件从 Windows 资源管理器(或文件资源管理器)拖动到源代码管理资源管理器的文件夹中。

  4. 当**“添加到源代码管理”对话框出现时,请确保要添加的所有文件都已选中,然后选择“包括项”**。

  5. 选择**“完成”**。

  6. 在团队资源管理器中,当出现**“挂起的更改”页时,确保要添加的二进制文件显示在“包含的更改”部分。 选择“签入”**。

利用您的代码不会生成的第三方二进制文件

很多团队开发的代码所依赖的二进制文件并非由他们用来管理代码的解决方案生成。 通常情况下,这些二进制文件是团队从第三方获得许可的库的一部分。

有时候,这些二进制文件来自同一公司的其他团队。 例如,团队 A 依赖团队 B 生成的二进制文件,由于某种原因,每个团队都必须在不同的团队项目集合中工作。 因此,团队 B 将二进制文件发送到团队 A,然后由团队 A 将其签入到版本控制中。

提示

如果您的开发计算机和生成服务器可访问 Internet,则 NuGet 可使您的团队更轻松地管理依赖项并让您的二进制文件保持最新。即使您决定使用 NuGet,您可能仍然应将二进制文件添加到版本控制,这样就可以重现并生成代码的历史版本。

您应该用来存储第三方二进制文件的文件夹和工作区结构取决于解决方案依赖这些库的方式。

添加文件夹或分支结构中的二进制文件

如果您将第三方二进制文件放置在包含了解决方案文件夹的同一个父文件夹中,那么所有解决方案中的所有代码项目都可以引用具有同一相对路径的库。

例如,某个团队使用了以下文件夹结构:

主父文件夹中的库文件夹

每个代码项目随后可以引用具有以下相对路径的库文件夹:../../Lib

如果您的团队在项目后期需要隔离要求不同版本的二进制文件的不同工作,则可以将库文件夹与您的解决方案文件夹一起分支。

例如,应用程序的版本 1 利用库的版本 1。 随着数据访问团队的一些开发人员开发下一版本,他们将利用版本 2。 但是,其他团队尚未准备好升级。 您可以使用分支处理这种情况。

分支结构中的库文件夹

使用工作区在二进制文件中映射

某些公司必须管理更为复杂的对第三方库的依赖项。 例如,多个团队项目包含具有对一组通用库的不同依赖项的解决方案。 在类似这样的情况下,您可将第三方库存储在专用的团队项目中。 各团队项目的参与者将在包含其需要的库的文件夹中进行映射。

例如,FabrikamFiber 设置以下团队项目、分支和文件夹结构:

存储在专用团队项目中的库

Raisa 将其开发计算机设置为使用两个工作区来执行两项不同的工作,每项工作都在她需要的库中进行映射:

库中的工作区映射

自定义版本控制忽略的文件

默认情况下,版本控制将忽略某些类型的文件(例如, .dll 文件)。 因此:

  • 当您将忽略的文件添加到在本地工作区中映射的文件夹时,它们不会出现在团队资源管理器的**“挂起的更改”**页中。

  • 当您尝试使用“添加到源代码管理”对话框添加忽略的文件时(例如通过将文件拖动到源代码管理资源管理器中),它们会自动出现在**“已排除的项”**选项卡中。

您可以通过在要应用规则的文件夹中放置名为 .tfignore 的文本文件来配置要忽略的文件的种类。 .tfignore 文件的影响是递归式的。 但是,您可以在子文件夹中创建 .tfignore 文件以重写父文件夹中的 .tfignore 文件的效果。

.tfignore 文件规则

以下规则适用于 .tfignore 文件:

  • # 开始一个注释行

  • 支持 * 和 ? 通配符。

  • filespec 是递归的,除非前面加上 \ 字符。

  • ! 否定 filespec(不忽略与模式匹配的文件)

.tfignore 文件示例

######################################
# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# Ignore .txt files in this folder 
\*.txt
# Ignore .xml files in this folder and all its sub-folders
*.xml
# Ignore all files in the Temp sub-folder
\Temp
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

创建并使用 .tfignore 文件

您不但可以使用上述规则手动创建 .tfignore 文本文件,还可以在**“挂起的更改”**页检测到更改时自动生成一个 .tfignore 文本文件。

自动生成 .tfignore 文件

  1. 在**“挂起的更改”页上的“排除的更改”部分,选择“检测到的更改”**链接。

    将出现**“提升候选更改”**对话框。

  2. 选择一个文件,打开其上下文菜单,然后依次选择“忽略此本地项”、“按扩展名忽略”、“按文件名忽略”或“按文件夹忽略”。

  3. 选择**“确定”“取消”以关闭“提升候选更改”**对话框。

  4. **“挂起的更改”页的“包含的更改”**部分将出现 .tfignore 文件。 您可以打开此文件并修改它以满足您的需求。

.tfignore 文件将自动作为包含的挂起更改添加,以便让您创建的规则应用于获得了该文件的每个团队成员。

从命令提示符处工作

  • Add 命令 将文件从开发计算机上的工作区上载到服务器。

请参见

其他资源

决定使用本地还是服务器工作区