Visual Studio 2015 新文件未自动添加到源代码管理

Posted

技术标签:

【中文标题】Visual Studio 2015 新文件未自动添加到源代码管理【英文标题】:Visual Studio 2015 new files not being added to source control automatically 【发布时间】:2016-11-26 04:54:59 【问题描述】:

我刚刚升级到 VS2015,遇到了一个我以前从未见过的问题。使用受源代码控制的现有解决方案,我能够修改文件,它们会被提取为待处理的更改,准备签入 TFS。

但是,我添加了一个新文件(此屏幕截图中以 Test.cs 为例),它没有作为新文件被拾取。

我需要右键单击它并单击“将文件添加到源代码管理”

这从来都不是问题。我希望将我添加为新文件的所有内容都作为待处理的更改拾取。我怎样才能做到这一点?我以前在以前的 Visual Studio 版本中没有见过这种情况。

我可以确认这个问题在另一台机器上是相同的。另外,“Promote Candidate Changes”中也不会提取新文件。

如果我然后单击“将文件添加到源代码管理”,我会收到此消息。

“选择的文件被忽略。是否仍将其添加到源代码管理?”

我的 .tfignore 文件只是有一个忽略包的指令,所以我认为这个文件不是问题。

我怎样才能让我的设置回到正轨?

更新:

我注意到这只发生在我工作区的“发布”分支上。所有其他分支都按预期运行。此外,如果我随后采用分支“Release”并将其称为“Release1”,那么问题就完全消失了!

具有特定名称“Release”的分支是否具有 TFS 中的任何特殊功能?

【问题讨论】:

【参考方案1】:

名为 Release 的文件夹及其内容会自动从 TFS 中排除(以及 Debug 和许多文件类型)。您可以通过创建一个 .tfignore 文件来覆盖特定文件夹的此设置,详见 link

的“自定义版本控制忽略哪些文件”部分

自定义版本控制忽略哪些文件

默认情况下,某些类型的文件(例如 .dll 文件)是 被版本控制忽略。结果:

当您将忽略的文件添加到本地映射的文件夹中时 工作区,它们不会出现在 Team 的 Pending Changes 页面中 探险家。

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

您可以通过放置文本来配置忽略哪些类型的文件 在要应用规则的文件夹中名为 .tfignore 的文件。这 .tfignore 文件的效果是递归的。但是,您可以创建 .tfignore 子文件夹中的文件以覆盖 .tfignore 的效果 父文件夹中的文件。

.tfignore 文件规则

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

# 开始注释行

* 和 ?支持通配符。

除非以 \ 字符为前缀,否则文件规范是递归的。

!否定文件规范(匹配模式的文件不会被忽略)

.tfignore 文件示例

忽略 ProjA 子文件夹及其所有子文件夹中的 .cpp 文件 ProjA*.cpp

忽略此文件夹中的 .txt 文件 *.txt

忽略此文件夹及其所有子文件夹中的 .xml 文件 *.xml

忽略 Temp 子文件夹中的所有文件 \Temp

不要忽略此文件夹或其任何子文件夹中的 .dll 文件 !*.dll

【讨论】:

@MartW 最近出现这个问题。看起来他们在 TFS 的上次更新中更改了此政策中的某些内容。【参考方案2】:

我们也遇到过这个问题,但在我们的案例中,这是因为我们有以“.Lib”结尾的文件夹。从这个 SO 问题中弄清楚:Visual Studio 2015. Files not added to TFS

【讨论】:

【参考方案3】:

由于一个名为“Release”的分支,我们遇到了同样的问题。但问题仅出现在 Visual Studio 2015 Update 3。使用 Visual Studio 2015 Update 2,一切正常。所以 Visual Studio Update 3 一定已经改变了它的行为。恢复到原来的行为会很有用。

【讨论】:

是的,我们在升级到 VS 2015 Update 3 后也遇到了同样的问题。使用以前的 VS2015 更新没有问题 我可以确认我在测试过的每个分支名称“Release”上都遇到了与 VS 2015 Update 3 相同的问题。相同的分支在 VS 2015 Update 2 上按预期运行。【参考方案4】:

将 .tfignore 文件添加到包含您希望它不忽略的扩展名的发布文件夹:

!*.vb

我尝试将此添加到我的解决方案文件夹中存在的 .tfignore 中,但没有帮助。它仅在我将一个添加到父发布文件夹时才有效。

..\Release
..\Release\.tfignore <-- this one
..\Release\SolutionA\
..\Release\SolutionA\.tfignore

msdn thread on the subject

【讨论】:

以上是关于Visual Studio 2015 新文件未自动添加到源代码管理的主要内容,如果未能解决你的问题,请参考以下文章

构建解决方案时未构建 Visual Studio 特定项目

Visual Studio 数据库项目,文件名中的架构未出现

Visual Studio 2015,无法更改新资源文件的访问修饰符

Visual Studio 2015 未响应/已停止工作的问题解决

Visual Studio 2015新添加宏

Visual Studio 未运行程序,因为它需要 v120 工具