我正在尝试让TFS(2013)忽略我的packages
文件夹。我非常希望在使用NuGet时不要控制它的源代码,这太好了!
我尝试了伪装(似乎不起作用),我尝试添加了.tfignore
文件-不会忽略任何内容。为什么TFS团队不像其他许多Subversion客户端那样添加一个永久忽略文件夹或文件的选项?
最佳答案
解决方法是:我们必须告诉NuGet和TFS都忽略软件包,因为NuGet试图做绝对不应该做的与源代码控制有关的事情(糟糕的形式,微软!)。因此,您必须做两件事。
首先,将一个名为.tfignore
的文件添加到解决方案文件夹中(请注意s
之后缺少tf
)。其内容应如下:
\packages
这告诉TFS忽略您的packages文件夹。现在,您会认为这也将忽略
repositories.config
文件。但是不会。为什么?谁知道,微软的方式是奇怪而神秘的。实际上,我认为这是我在下面概述的NuGet内容的一部分,但是,如果以后将其修复,并且您希望保留repositories.config
文件而不是让VS重新生成它,则应该可以使用此文件:\packages
!\packages\repositories.config
好的,现在感谢我们的
.tfignore
文件,TFS忽略了您的软件包。一切都很好,对吧? 错误,因为NuGet正在与源代码管理混在一起,并将软件包添加到您的未决更改中。因此,现在让我们告诉NuGet已将其裁剪掉。在解决方案文件夹的根目录中创建一个名为
.nuget
的文件夹。1现在,创建一个名为NuGet.config
的文件,并将其放在此新文件夹中2。其内容应如下所示:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
现在现在,您的软件包应不受源代码控制。只需记住将
NuGet.config
和.tfignore
文件添加到源代码管理中,这样它们就不会丢失。编辑:如果遇到问题,可能要删除您的packages文件夹, checkin 该更改,然后执行上述步骤。
还可以编辑:看来,新版本的Nuget不会发生这种情况。因此,如果您切换到VS / TFS 2017,则可能会解决此问题,而不必跳过上面的说明。
1 。使用源代码管理资源管理器添加文件夹;右键单击解决方案->添加文件夹->。nuget
2 。当我使用VS 2013弄清楚这一点时,我发现NuGet.config必须放在.nuget文件夹中。即使您的解决方案文件夹的根目录中已经有一个NuGet.config文件(例如,由于您的公司具有内部nuget提要)。但是,其中的一些注释表明它在VS 2015的解决方案根目录中可以正常工作。就我个人而言,我切换为在git模式下使用TFS,因此无法进行测试。此外,如果您确实有自定义供稿,请确保同时将自定义供稿和nuget.org都作为Nuget.config文件中的键,否则TFS有时会随机决定它无法还原软件包。