VS,Nuget,TFS - 管理复杂的内部依赖结构

时间:2013-01-11 16:50:23

标签: visual-studio-2012 nuget dependency-management tfs2012

由于我们构建/维护的产品数量,我们有一个相当复杂的dll结构(> 100个组件)。我们正在安装TFS 2012.我们目前使用NuGet来管理对外部dll的引用。

Nuget似乎可以成为管理内部dll的答案。

以下是我们结构的示例:

  • Framework.dll
  • Business.dll
    • 参考:Framework.dll
  • Business.X.dll
    • 参考:Framework.dll
    • 参考:Business.dll
  • Application.X.dll
    • refs:Framework.dll
    • refs:Business.X.dll
    • refs:Business.dll

为了使用NuGet完成此任务,我为每个程序集创建了一个nuget spec / package。然后每个包都包含其依赖的pacakge(s)。

  • Framework.1.0.nupkg
  • Business.1.0.nupkg
    • 取决于:Framework
  • Business.X.1.0.nupkg
    • 取决于:框架,业务
  • Application.X.1.0.nupkg
    • 取决于:Framework,Business,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来自动化)

我无法协调本地开发人员计算机与构建服务器之间的差异。

以下是我的理解:

  1. 由于NuGet的包恢复功能,我不需要将最终的程序集存储在TFS中。
  2. 使用NuGet添加引用,而不是引用程序集。例如,在Business VS项目中,框架程序集是从Nuget Framework.1.0包中添加的。
  3. 但是,这使得程序集开发人员难以构建/测试新功能。如何处理Business和Business.X程序集的开发人员如何在本地(在他们自己的机器上)测试功能而不删除/读取引用。这是必要的,因为Business.X引用了打包的Business,而不是本地构建的Business.dll。

    我的目标:

    1. 使用构建服务器生成版本化的共享程序集
    2. 允许使用者应用程序添加对这些程序集的引用
    3. 允许共享程序集的开发人员在需要服务器构建之前在本地轻松编译/测试
    4. 我认为Nuget适用于#1和#2,但我似乎无法完成#3。有更好的方法吗?

      感谢您提供任何信息/指示!

1 个答案:

答案 0 :(得分:0)

每个程序集(DLL)单独的NuGet程序包是过度的 - 我希望你的大多数内部NuGet程序包包含一组程序集,这些程序集提供了一大块功能,它基本上独立于其他程序集组。 / p>

所以这不是正确的模式:

  

为了使用NuGet完成此任务,我为每个程序集创建了一个nuget规范/包。

相反,您可能希望为每个解决方案(.sln)创建一个或两个NuGet包,假设您的解决方案是合理分组的。