在开发环境中使用Nuget - 最佳实践 / 如何操作

19

试图找出在开发环境中使用Nuget来管理我们自己的库的最佳方法。

我们希望标准化第三方库的Nuget使用方法,但也想使用Nuget来管理内部实用程序库,对于使用内部库的开发人员来说,这很好,大家都很满意。然而,对于正在积极开发实用程序库的开发人员来说,情况似乎更加棘手,他们以前的构建库、构建主应用程序、F5并直接运行的流程现在因发布、更新和潜在的大量包而变得缓慢,更不用提额外的流程问题!

我们在内部库上使用TDD,但每个人都需要能够调试和修改库以及主应用程序,已经看过Phil Haacks在1.3中演示的调试包和读过David Ebbos的博客,但那适用于不同的场景。

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

喜欢Nuget,可能希望从这个小家伙中获得更多的东西,谢谢反馈。

2个回答

3
我建议您使用单独的网络共享或源(类似于云中支持的myget.org),针对不同的情形。 您可以想象创建一个CI共享,一个QA共享,一个Releases共享等。
让参考库上的人执行CI构建,将CI包丢到CI存储库中,然后其他项目选择它们(只需进行简单的更新,可以在预构建期间通过PowerShell自动化:检查新版本,如果有,则更新)。
只需要确保当产品发布其里程碑时,也同时发布已发布的依赖项(可以简单地切换Feed,Releases总是比CI构建具有更高的版本号)。
希望能有所帮助! 问候, Xavier

这也是我认为应该是可能的。然而,我还没有找到任何实际解决方案来解决依赖关系。 我们目前正在考虑以下事项:
  1. 将本地开发构建发布到开发人员自己的本地 feed 中。
  2. 构建服务器开发构建发布到共享的开发 feed 中。
  3. 构建服务器 QA 构建发布到共享的 QA feed 中。
  4. 构建服务器发布构建发布到共享的发布 feed 中。 但是,我不确定如何在项目中设置依赖关系以选择正确的 feed 在下载程序集时。
- Spiralis
你不能“按包”配置提要。NuGet.config是针对解决方案的。此外,我认为将软件包推送到每个开发机器不是您想采取的方法。如果开发机器不可用或离线工作怎么办?请注意,每个开发框已经有一个本地缓存。出于好奇,您尝试过myget.org吗?特别是,请查看包源概念:http://docs.myget.org/docs/reference/package-sources - Xavier Decoster
将代码推送到开发人员自己的机器上,仅用于在该开发人员自己的机器上轻松解决依赖关系。它不是为了与任何其他人共享。在我们的设置中,每个软件包都是一个单独的存储库,因此根文件夹可以包含nuget.config文件。我们已经开始这样设置,尽管我们还没有完成,但实际上似乎它将会起作用。虽然我们仍有不同的挑战需要克服(https://dev59.com/ZmEi5IYBdhLWcg3wPKWx)。 - Spiralis

1

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

话虽如此 - 您的库开发是否可以独立完成?您已经提到您正在对库进行TDD,那么为什么不能完成这项工作,然后构建、部署,然后再进行主应用程序的工作呢?


我曾经遇到过同样的问题,同时开发应用和库,然后创建一个新包并将应用程序升级到新版本,尝试使用此扩展:http://visualstudiogallery.msdn.microsoft.com/68878c27-110c-43ec-ae61-3ea3f7aae88c - Rico Suter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接