我试图让TFS(2013)忽略我的包文件夹。我不希望它源代码控制,因为我正在使用NuGet,它是伟大的!
我尝试了隐身(似乎不工作),我尝试了添加.tfignore文件-没有什么被忽略。为什么TFS团队不像很多Subversion客户端那样添加一个永久忽略文件夹或文件的选项呢?
我试图让TFS(2013)忽略我的包文件夹。我不希望它源代码控制,因为我正在使用NuGet,它是伟大的!
我尝试了隐身(似乎不工作),我尝试了添加.tfignore文件-没有什么被忽略。为什么TFS团队不像很多Subversion客户端那样添加一个永久忽略文件夹或文件的选项呢?
您需要使用本地工作区才能使.tfignore工作。.tfignore文件必须位于包含要忽略的文件或文件夹的文件夹中。
所以如果你的解结构是这样的:
\Project
\Packages
\OtherStuff
foo.cs
你可以把你的.tfignore文件放在\Project中:
\Project
\Packages
\OtherStuff
foo.cs
.tfignore
在你的案例中.tfignore的内容是:
\包
这里有一些文档:http://msdn.microsoft.com/library/vstudio/ms245454(v=vs.110).aspx#tfignore
如果你正在使用Git和TFS,你需要添加一个“。gitignore”文件。您可以在“团队项目|设置| '添加忽略文件'”中执行此操作。然后打开文件并取消Nuget Packages内置的ignore语句的注释。
如果您正在使用TFVC并且配置了本地工作区,则可以使用“。tfignore”文件,该文件遵循与Git文件相同的格式。我认为你需要“packages/”。
加一块鸡块。在解决方案中的.nuget文件夹中的配置文件。 在鸡块中加入以下物质。配置文件:
<?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文件夹。现在,您可能认为这也会忽略存储库。配置文件。但它不会。为什么?谁知道呢,微软的方式是奇怪而神秘的。实际上,我认为这是我下面概述的NuGet内容的一部分,但如果将来它得到了修复,并且您想保留存储库。配置文件,而不是让VS重新生成它,你应该能够使用这个:
\packages
!\packages\repositories.config
现在多亏了。tfignore文件,TFS忽略了你的包。一切都很好,对吗?错了,因为NuGet在你的源代码控制和添加包到你的挂起的变化。现在让我们告诉NuGet把它剪掉。
在解决方案文件夹1的根目录下创建一个名为.nuget的文件夹现在,创建一个名为NuGet的文件。配置,并把它放在这个新文件夹2。它的内容应该是这样的:
<?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. Add the folder using Source Control Explorer; right-click the solution->Add folder->.nuget 2. When I figured this out using VS 2013, I found the NuGet.config had to go in the .nuget folder. Even if you already have a NuGet.config file in the root of your solution folder (because, say, your company has an internal nuget feed). However, some in the comments have indicated that it works fine in the solution root in VS 2015. Personally, I switched to using TFS in git mode, so I can't test. Additionally, if you do have a custom feed, ensure that you have both the custom feed and nuget.org as keys in the Nuget.config file, or sometimes TFS will randomly decide it can't restore the packages.
上述问题的另一种解决方案如下。
将packages文件夹添加到TFS(不包含任何文件或子文件夹) 右键单击Packages文件夹 左键单击高级 单击斗篷
值得注意的是,这个解决方案需要应用于每个TFS工作空间。对我来说,它比使用.tfignore文件可靠得多。
您可以在防止TFS将已安装的NuGet包添加到源代码控制中这篇博客文章中阅读有关此方法的更多信息。
对于那些报告。tfignore选项不能与nuget一起工作的人。配置设置它可能是感兴趣的-这些步骤最终为我工作:
删除我包文件夹里的所有东西 确保TFS没有对挂起的文件夹进行任何更改 密切与 重新打开VS,并重新加载解决方案-使用Nuget恢复重新填充 注意,TFS源代码控制没有挂起任何更改
这在visual studio online和VS2013上并不适用。
右键单击解决方案>启用NuGet包恢复。这将添加鸡块。配置文件到解决方案
添加.tfignore。我通常通过向解决方案根添加一个文本文件来做到这一点,让它检测到,然后通过单击“detected add”>右键单击忽略来排除。
将包添加到.tfignore,并告诉它包含repositories.config
从其他评论来看,你的里程数在这一点上可能会有所不同。这就是我所做的:
检查所有东西,包括所有包裹。 删除解决方案中的所有包,然后签入此更改(这将从TFS中删除包) 打开解决方案并构建,这会将包添加到项目中,但TFS不会接收它们。
你可以永久设置这个一次性在你的AppData\漫游所有解决方案(旧的和新的)!
在您的%AppData%\NuGet\NuGet。配置文件,在</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中省略包