【问题标题】:Nuget DisableSourceControlIntegration not workingNuget DisableSourceControlIntegration 不起作用
【发布时间】:2016-02-13 21:49:15
【问题描述】:

在使用 NuGet 时,我正在尝试遵循无提交策略以将程序集排除在 TFS 之外。我希望项目能够自动恢复依赖项,而不是向 TFS 添加待处理的更改。

我已经阅读了一些方法来做到这一点;一个正在使用.tfignore,这对于我们拥有的项目数量来说将是一件痛苦的事情。我们可以在 TFS 中隐藏文件夹,但我们需要为每个项目添加 packages 文件夹才能隐藏它。最后一种方法是通过 NuGet.config 使用 disableSourceControlIntegration 配置 NuGet,这将阻止 NugetClient 将包添加到项目或解决方案中。

**这是我正在使用的配置 XML:

<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>

如果我将它放在我的 {SolutionDir}.nuget 文件夹中,它适用于该解决方案。我正在尝试将它放在我的 %AppData%\nuget 文件夹中,以便将其应用于所有解决方案,但包还原仍会导致 TFS 添加我的包文件夹内容。

我正在使用 Visual Studio 2013、NuGet 2.8.6 和来自 VSOnline 的 TFS。**

【问题讨论】:

    标签: tfs nuget azure-devops


    【解决方案1】:

    我认为没有办法将此密钥放在根位置,看起来 Nuget 仅在 {SolutionDir}.nuget 文件夹中指定密钥时才使用该密钥。 Nuget 文档明确提到此密钥在解决方案级别有效,需要添加到 {SolutionDir}.nuget 文件夹。

    源代码控制集成 “解决方案”部分下的“disableSourceControlIntegration”允许您禁用“包”文件夹的源代码控制集成。 此键在解决方案级别有效,因此需要添加到“$(SolutionDir).nuget 目录”的 NuGet.config 文件中。此键的默认值为 true。

    编辑和更新感谢@TonyStewart871 找到此信息。我没有在 3.2 版本中测试过,也没有找到官方文档。

    但是根据GITHUB LINK Comments Section,从 NuGet 版本 3.2 开始,可以在用户级别为 %appdata%\nuget\nuget.config 文件中的所有解决方案添加密钥“disableSourceControlIntegration”,而不是在单个添加解决方案水平。请在下面找到 deepakaravindr 的评论:

    “您不仅可以将设置添加到解决方案级别 nuget.config,还可以将设置添加到 %appdata%\nuget 的 nuget.config。这也有效!只是它将应用于您打开的每个解决方案那台机器。请记住将以下部分作为子部分添加到 部分。并且,请注意该设置应始终位于 部分下才能正常工作”

    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
    

    NUGET Documentation

    【讨论】:

    • 根据文档,我相信这对于我所说的版本是正确的。似乎 3.2 版可能在用户级别添加了对此功能的支持,但是我找不到官方文档。其他人在此处的评论中列出了此功能:[link]stackoverflow.com/questions/31887010/… 和此处:[link]github.com/NuGet/Home/issues/980 在贡献者的 (deepakaravindr) cmets 中。
    • 感谢您的挖掘和发现,我会更新答案!
    【解决方案2】:

    有一个 DisableSourceControlIntegration-TFS NuGet 包将 {SolutionDir}.nuget 文件夹和配置文件添加到解决方案,以及 NuGet 包文件夹的 .tfignore 文件。它甚至比手动添加单个配置文件更容易。你可以在这里找到它:https://www.nuget.org/packages/DisableSourceControlIntegration-TFS

    【讨论】:

      【解决方案3】:

      相对于单个 TFS 项目,允许排除 NuGet 包文件夹的策略是正确的,因为只有当您需要从多个开发人员访问公共项目存储库时,排除 nuget 包才有意义。

      因此,如果有人需要在他的本地机器上复制解决方案的结构,第一次只恢复 NuGet 包(以及它的内容(库)),可以做到这一点而不会遇到与兼容性库等相关的任何问题.. 每次 NuGet 还原 Packages 文件夹中的库时,解决方案都能很好地编译。

      虽然,如果您只应该配置 NuGet 行为,其他开发人员也应该这样做,因此它应该错过有关此配置策略的便利:任何人都应该每次在他的本地计算机上复制此配置规则..

      相反,将此规则及其解决方案存储在 tfs 中允许每个人都继承此规则。

      另外,如果一个人想单独处理一个项目,他可以避免如果他想将 NuGet 配置为不提交其“Packages”文件夹内容,因此将这个特定 NuGet 规则存储在 TFS 中的策略是不错的选择。

      【讨论】:

        猜你喜欢
        • 2014-08-14
        • 1970-01-01
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2017-06-23
        • 2014-01-15
        • 2017-10-09
        相关资源
        最近更新 更多