获取TFS忽略我的包文件夹
我试图让TFS(2013)忽略我的packages
文件夹。 我热情地不希望它源控制,因为我使用NuGet,这是伟大的!
我试过掩饰(似乎不起作用),我已经尝试添加.tfignore
文件 – 没有被忽略。 为什么TFS团队只是添加一个选项来永久忽略像许多Subversion客户端那样的文件夹或文件?
这里的交易:我们必须告诉NuGet 和 TFS都忽略这些软件包,因为NuGet正在尝试做源代码控制相关的东西,它绝对不应该做的(糟糕的forms,微软!)。 所以你必须做两件事。
首先,将一个名为.tfignore
的文件添加到解决scheme文件夹中(注意在tf
之后缺lesss
)。 内容应该如下:
\packages
这告诉TFS忽略你的包文件夹。 现在,你会认为这也会忽略repositories.config
文件。 但它不会。 为什么? 谁知道,微软的方式是奇怪而神秘的。 实际上,我认为它是下面概述的NuGet的一部分,但是如果将来得到修复,并且想保留repositories.config
文件而不是让VS重新生成它,那么应该可以使用这个:
\packages !\packages\repositories.config
好的,现在感谢我们的.tfignore
文件,TFS忽略了你的包。 一切都很好,对吧? 错误 ,因为NuGet正在与您的源代码pipe理,并添加到您的未决更改包。 所以现在让我们告诉NuGet已经把它剪掉了。
在解决scheme文件夹的根目录下创build一个名为.nuget
的文件夹。 1现在,创build一个名为NuGet.config
的文件,并将其放在这个新的文件夹2中 。 它的内容应该是这样的:
<?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>
现在你的软件包应该远离源代码控制。 只要记住将NuGet.config
和.tfignore
文件添加到源代码pipe理,以便他们永远不会迷路。
编辑:如果你有问题,你可能想要删除你的包文件夹,签入该更改,然后通过上述步骤。
也编辑:它看起来像这将不会发生在较新版本的Nuget。 所以也许如果你切换到VS / TFS 2017这个问题将清除,而不是跳过上面的箍。
1 。 使用Source Control Explorer添加文件夹; 右键点击solution-> Add folder – >。nuget
2 。 当我想出了使用VS 2013,我发现NuGet.config必须在.nuget文件夹中。 即使你的解决scheme文件夹的根目录中已经有一个NuGet.config文件(因为你的公司有一个内部的nuget feed)。 不过,有些评论人士表示,在VS 2015的解决scheme根目录中工作正常。就个人而言,我转而在Git模式下使用TFS,所以我无法testing。 此外,如果您确实有自定义提要,请确保在Nuget.config文件中将自定义提要和nuget.org都作为键,或者有时TFS会随机决定无法恢复这些包。
以上是另一种解决scheme。
- 将包文件夹添加到TFS(没有任何文件或子文件夹)
- 右键单击包文件夹
- 左键单击高级
- 点击斗篷
值得注意的是,这个解决scheme需要在每个TFS工作区中应用。 它对我来说工作得更加可靠,而不是使用.tfignore
文件。
您可以在博客文章阻止TFS将已安装的NuGet包添加到源代码pipe理中来阅读有关此方法的更多信息。
对于那些报告.tfignore选项没有与nuget.config设置一起工作的人来说,这可能是有趣的 – 这些步骤终于为我工作了:
- 删除我的包文件夹中的一切
- 确保TFS在该文件夹周围没有任何更改
- closuresVS
- 重新打开VS,并重新加载解决scheme – 使用Nuget恢复重新填充包注意没有更改正在等待TFS源代码pipe理
您需要使用本地工作区来为.tfignore
工作。 .tfignore
文件必须位于包含要忽略的文件或文件夹的文件夹中。
所以如果你的解决scheme结构如下所示:
\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
在解决scheme的.nuget文件夹中添加一个nuget.config文件。 将以下内容添加到nuget.config文件中:
<?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>
disableSourceControlIntegration是TFS版本控制的诀窍。
您可以在AppData\Roaming
一次性永久性设置所有解决scheme(新旧)!
在您的%AppData%\NuGet\NuGet.Config
文件中,在</configuration>
XML标记之前添加以下内容…
<config> <add key="repositoryPath" value="C:\NuGetPackages" /> </config> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution>
…你可以指定你想要的任何path – 重要的是把它放在你的TFS工作区之外!
现在你再也不用担心那些东西了。 您的解决scheme文件夹将不再包含任何软件包; 所有解决scheme将默认使用您的自定义软件包位置。
注 – 这项工作是在每个用户的基础上。
将您的解决scheme设置为在构build时恢复,包文件夹和包文件将被签入,但包不会。
如果你使用Git和TFS,你需要添加一个“.gitignore”文件。 您可以在“团队项目|设置|'添加忽略文件'”中执行此操作。 然后打开文件并取消注释Nuget软件包的内置忽略语句。
如果您正在使用TFVC并且已经configuration了本地工作区,则可以使用“.tfignore”文件,该文件将相同的格式转换为Git文件。 我觉得你需要“包装/”。
这不适合我在Visual Studio在线和VS2013。
- 右键单击解决scheme>启用NuGet软件包还原。 这会将Nuget.config文件添加到解决scheme中
- 添加.tfignore。 我通常通过向解决scheme根目录添加一个文本文件,让它检测到,然后通过单击“检测到的添加”>右击忽略排除。
- 将软件包添加到.tfignore中,并告诉它包含repositories.config
从其他评论看来,你的这个问题可能会有所不同。 这就是我所做的:
-
检查一切,包括任何软件包。
-
删除你的解决scheme中的所有包,然后检查这个变化(这将从TFS删除包)
-
打开解决scheme,并构build将添加到项目的包,但TFS不会拿起它们。
我的解决scheme是在Nuget.Config中创build一个.tfignore 和下面的设置:
<configuration> ... <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> ... </configuration>
我的.tfignore包含这一行:
\packages
[我正在使用Visual Studio 2015更新2]
这并不理想,目前在github / nuget上logging为未解决的问题:
更容易从TFVC#493中省略包
泰耶的回答对我来说并不是一直工作的,有时候它会工作一段时间,但是这会给我一遍又一遍的重负。
我发现永久解决这个问题的唯一方法是隐藏我的工作区中的包文件夹。
例如:
Type Server Local ============================================ Active $/Work/Main C:\Code\Main Cloaked $/Work/Main/Packages
我遇到过同样的问题。 /packages
应该工作,但不适合我。 packages*.*
确实有效。
- nuget:“replace令牌”ID“没有值”
- EF Code First:如何从nuget包控制台中看到“EntityValidationErrors”属性?
- Microsoft.Bcl.Build NuGet包是做什么的?
- System.MissingMethodException:找不到方法?
- 如何在Visual Studio 2015中启用nugets包还原?
- Nuget – 在构build过程中不要看到允许nuget下载缺失的软件包
- Nuget整合vs更新
- 将内容文件设置为nuget包中的“copy local:always”
- .gitignore NuGet排除软件包/包含软件包/ repositories.config