我正在调查如何使用NuGet在我的组织内分发开发人员框架和工具。我有服务器设置,能够生成包并将它们添加到消费项目中。我现在正在寻求将其扩展到更真实的情况。
在我的情况下,我将有一个框架,我们分发给组织中的所有开发团队。这个框架有一个“核心”类库,然后是一组技术特定的库,如Acme.Web,Acme.Silverlight等。这些库中的每一个都引用了“核心”程序集。
我已经将每个这些程序集打包到它自己的NuGet包中,包括“core”,它被设置为其他包中的依赖项。这是因为开发人员在创建类库时可能只选择引用“核心”,但在创建Web应用程序时也需要这些类型。
另一个想法是我可以发布我的“核心”程序集的新版本,而不需要在所有其他程序包中进行更新。或者我可以吗?
想象一下我有项目A的情况,添加NuGet包B,它依赖于NuGet包C,然后更新包C.是否可以在不重建,重新包装和重新发布包B的情况下分发此更新?如果是这样,我是否需要采取任何措施来确保没有版本问题?
答案 0 :(得分:7)
听起来你问的问题是,给定以下依赖图:
- >意思取决于
B 1.0 -> C 1.0
如果碰巧有对C的更新,比方说C 1.1,您想知道是否可以将该更新发布到C并让消费者在不破坏B的情况下更新它。
我假设你在这里打包装配。如果是这样,那么你绝对可以做到。 NuGet做了一些事情来帮助使这个工作用于具有强名称的程序集(即它添加了必要的绑定重定向)。您只需要确保使用正确的版本控制(我强烈建议您阅读David Ebbo关于此主题的posts)。
让您基本了解这将如何运作。假设你是一个3人团队,你,开发人员1和2。
在上面的场景中,您将版本从C 1.0更改为C 1.0.1,并且不必重新发布B.
现在,如果你做了一个巨大的改变并将版本提升到C 2.0,那么也许你想考虑重新打包B并增加版本号并使该版本的B依赖于C 2.0:
B 2.0 -> C 2.0