【问题标题】:How to keep VS2015 NuGet from adding packages to TFS如何防止 VS2015 NuGet 将包添加到 TFS
【发布时间】:2015-08-07 21:37:03
【问题描述】:

VS2013 有一个错误,即 NuGet 会将包添加为待处理的更改,即使你告诉它不要使用 .tfignore。有一个workaround,但它不适用于 VS2015/NuGet3,并且 NuGet 又回到了它的旧技巧。是否有“Nu”解决方法? :-)

Microsoft Connect 项目:NuGet adds packages to TFS despite .tfignore

【问题讨论】:

  • 不是你要找的答案,但是在把我的头撞在 TFS 墙上几年之后,我说服我的团队相信 git 是要走的路.......gitignore 确实有效就像你期望的那样:-)

标签: visual-studio tfs nuget visual-studio-2015


【解决方案1】:

看起来这已在 NuGet Visual Studio 2015 扩展的 version 3.2 RC 中得到修复 - 至少更新到此版本对我有用。

可以在here 找到有关此问题的讨论,建议从 NuGet 3.1 更新到 3.2 RC。

更新

该扩展的 3.2 版现已发布(找到 here),其中包含此修复。

澄清

要完成这项工作,您需要两件事:

  1. 包含disableSourceControlIntegration 设置的nuget.config 文件
  2. 遵循disableSourceControlIntegration 设置的 NuGet Visual Studio 2015 扩展版本(3.2 及更高版本应该可以使用)

docs中所示:

NuGet 首先从默认位置加载 NuGet.config,然后加载从当前驱动器的根目录开始到当前目录结束的任何名为 NuGet.config 的文件。

这意味着您可以在default config file 中为您的用户配置文件(位于%APPDATA%\NuGet\NuGet.Config)或解决方案目录的 NuGet 配置文件中指定<solution><add key="disableSourceControlIntegration" value="true" /></solution>,例如\MySolution\.NuGet\NuGet.config

【讨论】:

  • 我发现将disableSourceControlIntegration 选项添加到%APPDATA%\NuGet\NuGet.Config 的默认配置文件中最简单,如下所示:<?xml version="1.0" encoding="utf-8"?> <configuration> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>
  • @dsghi 你刚刚为我解决了一些自 2013 年以来一直困扰我的问题。我从来不知道有一个 GLOBAL nuget.config 文件!
  • @dougajmcdonald 请记住,如果扩展已经存在(即,包文件夹已经在源代码管理中),简单地更新扩展可能无法解决此问题。在这种情况下,您需要先从 TFS 中删除 packages 文件夹,然后 VS 才会开始忽略它。
  • 我刚刚用VS2015做了一个新项目。使用 Visual Studio 的 NuGet 包管理器 3.3.0.167。在Add Solution to Source Control 上,它添加了包文件夹、子文件夹、二进制文件等。我认为这个答案不起作用。
  • @Mikee 除非我误解了你,否则缺少 nuget.config 文件(因此缺少 disableSourceControlIntegration 指令)是签入包的原因。
【解决方案2】:

在您的%AppData%\NuGet\NuGet.Config 文件中,在</configuration> XML 标记之前添加以下内容...

<config>
  <add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
  <add key="disableSourceControlIntegration" value="true" />
</solution>

...你可以指定任何你想要的路径 - 重要的是把它放在你的 TFS 工作区之外!

现在您再也不必担心这些事情了。您的解决方案文件夹将不再包含任何包;所有解决方案都将默认使用您的自定义包位置。

注意 - 这是基于每个用户的。

直到现在,我一直在以一个配置一个解决方案 (\.nuget\NuGet.Config) 的方式做同样的事情。感谢@dsghi 的洞察!

确保您的解决方案文件夹不包含 .nuget 文件夹(旧的做事方式)。即使该文件夹不包含在解决方案中并且仅包含在文件系统中,它也会覆盖所有内容!

【讨论】:

  • 这行得通,但你真的有2个答案在这里。我只想disableSourceControlIntegration 而不是为repositoryPath 选择新位置。
  • 这很可能是因为您更新了 NuGet VS 2015 扩展的版本。在 3.1 版中,无论您的配置文件在哪里,disableSourceControlIntegration 设置都不起作用。
  • 嗯,这很奇怪。自 VS2013 以来我一直在这样做
  • 我也是。我的意思是 3.1 打破了对该设置的支持 - 在此之前和之后都运行良好。
【解决方案3】:

我有同样的问题,但我还没有找到真正的解决方案。

到目前为止,我发现的唯一解决方法是:

  • 右键单击“团队资源管理器 - 待更改”中的包文件夹 并选择“撤消”。

【讨论】:

  • 解决方法实际上只是第 1 步。“撤消挂起的更改”不会删除文件,您不必立即签入。虽然有一个合理的解决方法是件好事,但也许存在也是使这个 bug 长期得不到任何爱的诅咒。
  • 是的,你是对的。我想太多了。
猜你喜欢
  • 2016-09-14
  • 2011-05-05
  • 1970-01-01
  • 2022-01-12
  • 2016-11-14
  • 1970-01-01
  • 2014-02-05
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多