2011-04-27 67 views
15

试图找出在开发环境中使用Nuget来管理我们自己的库的最佳方式。在开发环境中使用Nuget - 最佳实践/如何

我们想要在Nuget上为我们的第三方库做标准化的工作,但也想用Nuget来管理我们的内部工具库,对于开发者来说,这是非常棒的,每个人都很开心。然而,对于积极开发Utility lib的开发人员来说,它似乎更成问题,他们以前的构建lib,构建主应用程序F5的过程现在已经放慢,并且发布,更新以及潜在的大量软件包,更不用说了呻吟另外的过程!

我们在内部库中使用TDD,但每个人都需要能够随主应用程序一起调试和修改库,在1.3版的调试软件包中看到Phil Haacks演示,并阅读David Ebbos博客,但这符合不同的场景。

那么开发/调试周期的最佳过程是什么?如果要使用Nuget,那么我们需要接受现有的约束条件,或者是否存在人们正在使用的混合实践,也许1.3更接近于将所有这些自动化,或者我们只是避免使用Nuget来实现内部包,这将是一个真正的耻辱。

Loving Nuget,也许想从这个小家伙那里得到很多答案,反馈表示赞赏。

感谢

回答

3

我建议你使用独立的网络共享或饲料(类似于myget.org支持云)于不同的场合。 你可以想象创建一个CI共享,一个QA份额,一个发行版份额,...

让人们在引用的库上工作做CI构建,删除CI存储库上的CI包例如,并让他们拾起通过其他项目(只需要进行简单更新,可以通过PowerShell在预构建中实现自动化:检查新版本,如果是,则更新)。

只要确保产品发布其里程碑时,它们还会释放依赖关系(可能与切换源一样简单,发布版的版本号始终高于CI版本)。

希望有帮助! 欢呼声, Xavier

+0

这也是我认为应该有可能的。但是,我还没有找到解决依赖关系的实用解决方案。 我们正在研究如下操作: 1.本地开发版本将发布到开发者自己的本地供稿中。 2.构建服务器开发构建发布到共享的开发源。 3.构建服务器QA构建发布到共享QA源。 4.构建服务器发布版本发布到共享的发布源。 但是,我不确定如何设置项目中的依赖项以在装配时选择正确的源。 – Spiralis 2014-01-26 22:08:24

+0

您无法配置“每个包”的订阅源。 NuGet.config是每个解决方案。另外,我不认为将软件包推送到每台开发机器是您想要采取的方法。如果开发机器不可用或正在脱机工作会怎样?请注意,每个开箱已经有一个本地缓存。出于好奇,你是否尝试过myget.org?尤其是,请看一下包源概念:http://docs.myget.org/docs/reference/package-sources – 2014-01-27 07:42:51

+0

推送给开发人员自己的机器只是为了轻松解决对该开发人员自己的机器的依赖关系。这不是要分享给其他人。每个软件包在我们的设置中都有自己的repo,sp根文件夹可以包含nuget.config文件。我们已经开始如此设置,即使我们还没有完成,它确实看起来好像会起作用。虽然,我们有不同的挑战,但我们试图解决,虽然(http://stackoverflow.com/questions/21467094/nuget-issues-with-packages-config-project-references-and-the-solutionwide-packa) – Spiralis 2014-02-02 23:23:28

1

如果你在为lib和在同一时间的主要应用程序的源代码的工作,我会说的NuGet可能不是一个很好的解决方案。我认为它只适用于你使用库的“稳定”版本,在开发主应用程序时不需要频繁更改的情况。

这就是说 - 你的图书馆的开发是否可以孤立地完成?你已经提到你正在对库进行TDD,那么为什么不能完成这项工作,然后构建,部署,然后完成主要的应用程序工作?

+0

我有同样的问题,同时在应用程序和库上工作,然后创建一个新包,并将应用程序升级到新版本,请尝试以下扩展:http://visualstudiogallery.msdn.microsoft .com/68878c27-110c-43ec-ae61-3ea3f7aae88c – 2014-08-23 13:39:11

0

我同意,如果您在源代码控制存储库中使用多个分支,Nuget不是最好的方法。

我对此做了一些探索,无法找到如何自动切换Feed并获得项目的最新Nuget包而没有某种开销。

我们在TFS中有三个分支,它跟随和敏捷过程。

我如何看到它的工作原理: 如果开发人员在开发分支上开发并更新Nuget供稿,我们会在发布时合并到INT分支。有一个自动化的构建过程,但他们的代码项目需要能够告诉程序包有更新,所以我在项目中实施了更新并安装了预构建步骤。现在的问题是,项目总是会更新,即使你不想要它,任何发生的构建都会拉动最新的nuget包,但存在风险。

我似乎无法解决如何以编程方式选择何时更新软件包。

+0

这应该是一个答案? – 2012-09-26 16:30:37

+0

Hi Austin, 不,这是我对NuGet的更多观察,因为我从技术上看它在我的工作环境中实现它。目前我似乎无法通过一些障碍。 – 2012-10-24 10:18:19