在构建期间限制NuGet存储库

时间:2013-01-13 09:01:44

标签: msbuild nuget

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

有没有办法放入一个覆盖,迫使NuGet忽略%appdata%中的配置文件以外的任何配置文件? 或者可以有一种方法来自定义NuGEt电源工具包中的msbuild目标来实现这个目标吗?

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

3 个答案:

答案 0 :(得分:0)

这里的派对有点晚了,但希望它对某人有用......

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

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

答案 1 :(得分:0)

根据documentation,您应该能够通过明确指定存储库来限制存储库。以下内容仅应使官方包源活跃。

<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> 

答案 2 :(得分:0)

你可以:

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

  2. 为构建使用MsBuild proj文件并添加预构建阶段,该阶段从给定的源列表中恢复解决方案中的包,例如nuget.org +内部稳定NuGet包源(command line reference)。如果在packages.config文件中列出的预发布版本总是至少有一个版本,那么这应该有用。