【发布时间】:2012-12-26 07:27:11
【问题描述】:
由于我们构建/维护的产品数量众多,我们有一个相当复杂的 dll 结构(>100 个程序集)。我们正在安装 TFS 2012。我们目前使用 NuGet 来管理对外部 dll 的引用。
Nuget 似乎可以成为管理我们内部 dll 的解决方案。
这是我们的结构示例:
- Framework.dll
- 业务.dll
- 参考:Framework.dll
- Business.X.dll
- 参考:Framework.dll
- 参考:Business.dll
- Application.X.dll
- 参考:Framework.dll
- 参考:Business.X.dll
- 参考:Business.dll
为了使用 NuGet 完成此任务,我为每个程序集创建了一个 nuget 规范/包。然后每个包都包含其依赖包。
- Framework.1.0.nupkg
- Business.1.0.nupkg
- 取决于:框架
- Business.X.1.0.nupkg
- 取决于:框架、业务
- Application.X.1.0.nupkg
- 取决于:框架、业务、Business.X
1) 我创建了Framework VS 项目,构建它,并将它打包到Framework.1.0.nupkg 2)我打开Business VS项目并通过安装Framework.1.0.nupkg添加了对Framework.dll的引用 3) 然后我将 Business VS 项目构建并打包为 Business.1.0.nupkg 4)我为每个程序集重复了这个过程(仅供参考,我使用 NuGetter 来自动化这个)
我无法协调本地开发者机器和构建服务器之间的差异。
这是我的理解:
- 由于 NuGet 的包还原功能,我不需要将最终程序集存储在 TFS 中。
- 不是引用程序集,而是使用 NuGet 添加引用。例如,在 Business VS 项目中,框架程序集是从 Nuget Framework.1.0 包中添加的。
但是,这使程序集开发人员难以构建/测试新功能。处理 Business 和 Business.X 程序集的开发人员应该如何在不删除/读取引用的情况下在本地(在他们自己的机器上)测试功能。这是必要的,因为 Business.X 引用的是打包的 Business,而不是本地构建的 Business.dll。
我的目标:
- 使用构建服务器生成版本化的共享程序集
- 允许消费者应用程序添加对这些程序集的引用
- 允许共享程序集的开发人员在需要服务器构建之前轻松地在本地编译/测试
我认为 Nuget 对于 #1 和 #2 效果很好,但我似乎无法完成 #3。有没有更好的方法来做到这一点?
感谢任何信息/指针!
【问题讨论】:
-
能不能不用单元测试来保证组件是好的?
-
我同意 @Betty 的观点,看起来您只需要一些好的 UT 用于共享 asm 开发人员,这些 UT 可以包含在他们的门控签入中
标签: visual-studio-2012 nuget dependency-management