我试图让TFS(2013)忽略我的packages文件夹。我不希望它源代码控制,因为我正在使用NuGet,它是伟大的!
packages
我尝试了隐身(似乎不工作),我尝试了添加.tfignore文件-没有什么被忽略。为什么TFS团队不像很多Subversion客户端那样添加一个永久忽略文件夹或文件的选项呢?
.tfignore
你需要为.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)。其内容应如下:
tf
s
这告诉TFS忽略你的packages文件夹。现在,你会认为,这也会忽略repositories.config文件。但它不会。为什么?谁知道呢,微软的方式是奇怪而神秘的。实际上,我认为这是我下面概述的NuGet内容的一部分,但如果在将来得到修复,并且你想保留repositories.config文件而不是让VS重新生成它,你应该能够使用这个:
repositories.config
\packages !\packages\repositories.config
好了,现在多亏了我们的.tfignore文件,TFS忽略了你的包。一切都很好,对吗?错误的,因为NuGet是乱搞你的源代码控制和添加包到你的挂起的变化。现在让我们告诉NuGet把它剪掉。
在解决方案文件夹的根目录中创建一个名为.nuget的文件夹。现在,创建一个名为NuGet.config的文件,并将其放在这个新文件夹__abc3中。它的内容应该是这样的:
.nuget
NuGet.config
现在你的包应该在源代码控制之外。只要记住将NuGet.config和.tfignore文件添加到源代码控制中,这样它们就不会丢失。
编辑:如果你有问题,你可能想要删除你的packages文件夹,签入这个更改,然后执行上面的步骤。
看起来这不会发生在Nuget的新版本。所以如果你切换到VS/TFS 2017,这个问题就会解决,而不用跳过上面的步骤。
我也有同样的问题。/packages应该工作,但没有为我。packages*.*起作用了。
/packages
packages*.*
上述问题的另一种解决方案如下。
值得注意的是,这个解决方案需要应用于每个TFS工作空间。对我来说,它比使用.tfignore文件可靠得多。
你可以在博客文章防止TFS将已安装的NuGet包添加到源代码控制中中阅读更多关于这种方法的内容。
对于那些报告。tfignore选项不能与nuget一起工作的人。配置设置它可能是感兴趣的-这些步骤最终为我工作:
这在visual studio online和VS2013上并不适用。
从其他评论来看,你的里程数在这一点上可能会有所不同。这就是我所做的:
检查所有东西,包括所有包裹。
删除解决方案中的所有包,然后签入此更改(这将从TFS中删除包)
打开解决方案并构建,这会将包添加到项目中,但TFS不会接收它们。
你可以永久地在AppData\Roaming中为所有解决方案(old &新)!
AppData\Roaming
在你的%AppData%\NuGet\NuGet.Config文件中,在</configuration> XML标记之前添加以下内容…
%AppData%\NuGet\NuGet.Config
</configuration>
<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包含这一行:
[我正在使用Visual Studio 2015 Update 2]
这并不理想,目前在github/nuget上被记录为一个开放问题:
使它更容易从TFVC #493中省略包