让TFS忽略我的包文件夹

我试图让TFS(2013)忽略我的packages文件夹。我不希望它源代码控制,因为我正在使用NuGet,它是伟大的!

我尝试了隐身(似乎不工作),我尝试了添加.tfignore文件-没有什么被忽略。为什么TFS团队不像很多Subversion客户端那样添加一个永久忽略文件夹或文件的选项呢?

104468 次浏览

你需要为.tfignore工作使用本地工作区。.tfignore文件必须位于包含要忽略的文件或文件夹的文件夹中。

所以如果你的解结构是这样的:

\Project
\Packages
\OtherStuff
foo.cs

你可以把你的.tfignore文件放在\Project中:

\Project
\Packages
\OtherStuff
foo.cs
.tfignore

在你的案例中.tfignore的内容是:

\packages

这里有一些文档给你:http://msdn.microsoft.com/library/vstudio/ms245454 (v = vs.110) . aspx # tfignore

将您的解决方案设置为在构建时恢复,将检入包文件夹和包文件,但不会检入包。

如果你正在使用Git和TFS,你需要添加一个“。gitignore”文件。您可以在“团队项目|设置| '添加忽略文件'”中执行此操作。然后打开文件并取消Nuget Packages内置的ignore语句的注释。

如果您正在使用TFVC并且配置了本地工作区,则可以使用“。tfignore”文件,该文件遵循与Git文件相同的格式。我认为你需要“packages/”。

添加一个块。在解决方案中的.nuget文件夹中的配置文件。 在鸡块中加入以下物质。配置文件:< / p >

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

disablesourcecontrointegration是TFS版本控制的诀窍。

Terje的回答并不总是为我工作,有时它会工作一段时间,但随后它会再次为我挂起一堆“添加”。

我找到的唯一永久解决这个问题的方法是在我的工作区中隐藏packages文件夹。

例如:

Type      Server                Local
============================================
Active    $/Work/Main           C:\Code\Main
Cloaked   $/Work/Main/Packages

事情是这样的:我们必须告诉两个NuGet 而且 TFS忽略这些包,因为NuGet正在尝试做它绝对不应该做的与源代码控制相关的事情(糟糕的形式,微软!)所以你必须做两件事。

首先,将一个名为.tfignore的文件添加到解决方案文件夹中(注意,tf后面没有s)。其内容应如下:

\packages

这告诉TFS忽略你的packages文件夹。现在,你会认为,这也会忽略repositories.config文件。但它不会。为什么?谁知道呢,微软的方式是奇怪而神秘的。实际上,我认为这是我下面概述的NuGet内容的一部分,但如果在将来得到修复,并且你想保留repositories.config文件而不是让VS重新生成它,你应该能够使用这个:

\packages
!\packages\repositories.config

好了,现在多亏了我们的.tfignore文件,TFS忽略了你的包。一切都很好,对吗?错误的,因为NuGet是乱搞你的源代码控制和添加包到你的挂起的变化。现在让我们告诉NuGet把它剪掉。

在解决方案文件夹的根目录中创建一个名为.nuget的文件夹。现在,创建一个名为NuGet.config的文件,并将其放在这个新文件夹__abc3中。它的内容应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>

现在你的包应该在源代码控制之外。只要记住将NuGet.config.tfignore文件添加到源代码控制中,这样它们就不会丢失。

编辑:如果你有问题,你可能想要删除你的packages文件夹,签入这个更改,然后执行上面的步骤。

看起来这不会发生在Nuget的新版本。所以如果你切换到VS/TFS 2017,这个问题就会解决,而不用跳过上面的步骤。

< p > <强> 1 > < /强。使用源代码管理资源管理器添加文件夹;右键单击解决方案->添加文件夹->.nuget < br > 2。当我使用VS 2013解决这个问题时,我发现了NuGet。Config必须放在。nuget文件夹中。即使你已经有一个NuGet。配置文件在解决方案文件夹的根目录(因为,比如说,您的公司有一个内部的nuget提要)。然而,一些评论指出,它在VS 2015的解决方案根中工作得很好。就我个人而言,我改用在git模式下使用TFS,所以我无法进行测试。此外,如果你有一个自定义提要,确保你在Nuget中有自定义提要和nuget.org作为键。 . config文件,或者有时TFS会随机决定它不能恢复包

我也有同样的问题。/packages应该工作,但没有为我。packages*.*起作用了。

上述问题的另一种解决方案如下。

  • 将packages文件夹添加到TFS(不包含任何文件或子文件夹)
  • 右键单击Packages文件夹
  • 左键单击高级
  • 单击斗篷

值得注意的是,这个解决方案需要应用于每个TFS工作空间。对我来说,它比使用.tfignore文件可靠得多。

你可以在博客文章防止TFS将已安装的NuGet包添加到源代码控制中中阅读更多关于这种方法的内容。

对于那些报告。tfignore选项不能与nuget一起工作的人。配置设置它可能是感兴趣的-这些步骤最终为我工作:

  1. 删除我包文件夹里的所有东西
  2. 确保TFS没有对挂起的文件夹进行任何更改
  3. 密切与
  4. 重新打开VS,并重新加载解决方案-使用Nuget恢复重新填充 请注意,TFS源代码控制
  5. 没有等待更改

这在visual studio online和VS2013上并不适用。

  • 右键单击解决方案>启用NuGet包恢复。这将添加鸡块。配置文件到解决方案

enter image description here

  • 添加.tfignore。我通常通过向解决方案根添加一个文本文件来做到这一点,让它检测到,然后通过单击“detected add”>右键单击忽略来排除。

enter image description here

  • 将包添加到.tfignore,并告诉它包含repositories.config

enter image description here

从其他评论来看,你的里程数在这一点上可能会有所不同。这就是我所做的:

  • 检查所有东西,包括所有包裹。

  • 删除解决方案中的所有包,然后签入此更改(这将从TFS中删除包)

  • 打开解决方案并构建,这会将包添加到项目中,但TFS不会接收它们。

你可以永久地在AppData\Roaming中为所有解决方案(old &新)!

在你的%AppData%\NuGet\NuGet.Config文件中,在</configuration> XML标记之前添加以下内容…

<config>
<add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>

...你可以指定任何你想要的路径-重要的是把它放在你的TFS工作区之外!

现在你再也不用担心那些事了。您的解决方案文件夹将不再包含任何包;所有解决方案将默认使用您的自定义包位置。

注:此工作是基于每个用户。

对我有效的解决方案是在Nuget中创建一个.tfignore 而且和下面的设置。配置:

<configuration>
...
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...
</configuration>

我的.tfignore包含这一行:

\packages

[我正在使用Visual Studio 2015 Update 2]

这并不理想,目前在github/nuget上被记录为一个开放问题:

使它更容易从TFVC #493中省略包