让TFS忽略“我的包”文件夹
我试图让TFS(2013)忽略我的让TFS忽略“我的包”文件夹,tfs,nuget,Tfs,Nuget,我试图让TFS(2013)忽略我的软件包文件夹。我强烈地不希望它是源代码控制的,因为我使用的是NuGet,它很棒 我尝试过隐藏(似乎不起作用),我尝试过添加.tfignore文件-没有任何内容被忽略。为什么TFS团队不像许多Subversion客户端一样添加一个永久忽略文件夹或文件的选项呢 您需要使用本地工作区使.tfignore工作。.tfignore文件必须位于包含要忽略的文件或文件夹的文件夹中 因此,如果您的解决方案结构如下所示: \Project \Packages \Oth
软件包文件夹。我强烈地不希望它是源代码控制的,因为我使用的是NuGet,它很棒
我尝试过隐藏(似乎不起作用),我尝试过添加.tfignore
文件-没有任何内容被忽略。为什么TFS团队不像许多Subversion客户端一样添加一个永久忽略文件夹或文件的选项呢 您需要使用本地工作区使.tfignore
工作。.tfignore
文件必须位于包含要忽略的文件或文件夹的文件夹中
因此,如果您的解决方案结构如下所示:
\Project
\Packages
\OtherStuff
foo.cs
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
您应该将.tfignore文件放在\Project中:
\Project
\Packages
\OtherStuff
foo.cs
.tfignore
在您的情况下,.tfignore的内容将是:
\packages
这里有一些文档供您参考:将您的解决方案设置为在生成时还原,将签入包文件夹和包文件,但包不会 如果将Git与TFS一起使用,则需要添加一个“.gitignore”文件。您可以在“团队项目”设置“添加忽略文件”中执行此操作。然后打开该文件并取消注释Nuget包的内置ignore语句
如果您使用的是TFVC,并且配置了本地工作区,则可以使用与Git文件格式相同的“.tfignore”文件。我认为您需要“packages/”在解决方案的.nuget文件夹中添加一个nuget.config文件。
将以下内容添加到nuget.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
disableSourceControlIntegration是TFS版本控制的关键 Terje's并不总是对我有效,有时它会有效一段时间,但之后它会再次为我“添加”大量内容
我发现永久解决这个问题的唯一方法是在我的工作区中隐藏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
的文件夹。1现在,创建一个名为nuget.config
的文件,并将其放入这个新文件夹中2。其内容应如下所示:
\Project
\Packages
\OtherStuff
foo.cs
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
现在,您的包应该不受源代码控制。只需记住将NuGet.config
和.tfignore
文件添加到源代码管理中,这样它们就不会丢失
编辑:如果您遇到问题,您可能需要删除您的packages文件夹,签入该更改,然后执行上述步骤
同时编辑:新版本的Nuget似乎不会出现这种情况。因此,如果您切换到VS/TFS 2017,这个问题可能会在不跳过上述障碍的情况下得到解决
1。使用源代码管理资源管理器添加文件夹;右键单击解决方案->添加文件夹->。nuget
2。当我使用VS2013解决这个问题时,我发现NuGet.config必须放在.NuGet文件夹中。即使您的解决方案文件夹的根目录中已经有一个NuGet.config文件(例如,您的公司有一个内部NuGet提要)。然而,评论中的一些人指出,它在VS 2015的解决方案根中运行良好。就我个人而言,我切换到在git模式下使用TFS,因此无法进行测试。此外,如果您确实有自定义源,请确保在nuget.config文件中同时有自定义源和nuget.org作为键,否则有时TFS会随机决定无法还原包。我也遇到了同样的问题<代码>/packages
应该可以工作,但对我来说不行<代码>软件包**
确实有效。上述解决方案的替代方案如下
- 将packages文件夹添加到TFS(无任何文件或子文件夹)
- 右键单击“包”文件夹
- 左键单击高级
- 点击斗篷
.tfignore
文件更可靠
您可以在博客文章中阅读有关此方法的更多信息。对于那些报告.tfignore选项不适用于nuget.config设置的人,可能会感兴趣-这些步骤最终对我有效:
这在visual studio online和VS2013上对我来说不太管用
- 右键单击解决方案>启用NuGet包还原。这将把Nuget.config文件添加到解决方案中
- 添加.tfignore。我通常通过向解决方案根目录中添加一个文本文件来实现这一点,让它检测到这一点,然后通过单击来排除
\packages