Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让TFS忽略“我的包”文件夹_Tfs_Nuget - Fatal编程技术网

让TFS忽略“我的包”文件夹

让TFS忽略“我的包”文件夹,tfs,nuget,Tfs,Nuget,我试图让TFS(2013)忽略我的软件包文件夹。我强烈地不希望它是源代码控制的,因为我使用的是NuGet,它很棒 我尝试过隐藏(似乎不起作用),我尝试过添加.tfignore文件-没有任何内容被忽略。为什么TFS团队不像许多Subversion客户端一样添加一个永久忽略文件夹或文件的选项呢 您需要使用本地工作区使.tfignore工作。.tfignore文件必须位于包含要忽略的文件或文件夹的文件夹中 因此,如果您的解决方案结构如下所示: \Project \Packages \Oth

我试图让TFS(2013)忽略我的
软件包
文件夹。我强烈地不希望它是源代码控制的,因为我使用的是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(无任何文件或子文件夹)
  • 右键单击“包”文件夹
  • 左键单击高级
  • 点击斗篷
值得注意的是,此解决方案需要应用于每个TFS工作区。它比使用
.tfignore
文件更可靠


您可以在博客文章中阅读有关此方法的更多信息。

对于那些报告.tfignore选项不适用于nuget.config设置的人,可能会感兴趣-这些步骤最终对我有效:

  • 删除“我的包”文件夹中的所有内容
  • 确保TFS未对该文件夹进行任何更改
  • 接近VS
  • 重新打开VS并重新加载解决方案-使用Nuget restore重新填充 包注意:TFS源代码管理没有挂起的更改

  • 这在visual studio online和VS2013上对我来说不太管用

    • 右键单击解决方案>启用NuGet包还原。这将把Nuget.config文件添加到解决方案中

    • 添加.tfignore。我通常通过向解决方案根目录中添加一个文本文件来实现这一点,让它检测到这一点,然后通过单击来排除
      \packages