0

我们在这样一个环境中工作,开发人员在测试和评估各种 alpha 包时在他们的工作空间中设置本地存储库并不少见。通常会检查他们的 nuget.configs 以及他们的代码更改,这会破坏我们的 CI 构建。更糟糕的是,当此类构建提交到黄金构建服务器时,它会产生更多问题,因为构建会在那里中断,或者如果开发人员使用黄金构建服务器可见的存储库,则 alpha 包将包含在黄金构建中。

有没有一种方法可以强制 NuGet 忽略除 %appdata% 中的配置文件之外的任何配置文件?或者,是否有一种方法可以自定义 NuGET 电动工具包中的 msbuild 目标来实现这一目标?

我们在 TFS 2010 和 VS 2010/2012 环境中工作,并且可以修改默认的构建工作流程,以放入构建过程中可能需要的任何自定义。

4

3 回答 3

0

根据文档,您应该能够通过明确指定存储库来限制它们。以下仅应使官方包源处于活动状态。

<packageSources>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
    <add key="TestSource" value="C:\Temp" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
    <add key="NuGet official package source" value="https://nuget.org/api/v2/" />
</activePackageSource> 
于 2014-06-24T07:59:37.273 回答
0

你可以:

  1. 通过启用 NuGet 还原,在您的解决方案中禁用 NuGet 源代码控制集成。

  2. 为您的构建使用 MsBuild proj 文件并添加一个预构建阶段,该阶段从给定的源列表恢复解决方案中的包,例如 nuget.org + 内部稳定 NuGet 包源(命令行参考)。如果总是有一个版本至少比 packages.config 文件中列出的预发布版本高,这应该可以工作。

于 2014-08-05T22:57:45.877 回答
0

在这里聚会有点晚了,但希望它对某人有用......

我曾在类似的环境中工作过,为了解决这个问题,我们在 nuget.config 中添加了一个本地存储库(例如 c:\localpackages),以及由所有人共享的远程存储库(包括构建服务器)。然后,任何开发人员都可以使用这个本地存储库来添加他们正在处理(或想要测试)的包。

这意味着永远不需要更改 nuget.config 文件。但这并没有完全解决问题,因为开发人员可以提交一个引用从本地存储库安装的包的项目文件(这通常会破坏构建)。为了解决这个问题,我们不得不改变我们的代码审查流程来检查这种情况。

于 2014-01-28T13:02:39.933 回答