我们正试图找出一些处理依赖关系的约定,并将代码检入svn。以前的方法基本上是免费的,这意味着项目无法检查和构建而不需要摆弄引用(大多数项目都是C#)。
我们一次修复这一步,现在正在检查二进制文件到一个单独的svn存储库。构建版本由它们对应的svn修订版号区分,因此您可能有一个类似svnrelease/libraryA/r1000/libraryA.dll
的路径。有一件事是这样的场景:库A依赖于库B,项目P依赖于库A,但也直接引用库B.如果库A引用B的修订版1000,但项目P的直接引用是修订版2000?
我建议在将文件名检入发行版svn repo时将修订号包括在DLL文件名中,这样多个版本就可以共存。一位同事建议VS2k8可以自动处理这个问题。因此,如果在库A项目中,您将其设置为版本1.8,VS将输出命名为“libraryA_1_8.dll”,在项目P中,您可以引用“$(release)\ libraryA \ $(version)”它可以解决。我找不到任何有关如何执行此操作的信息。这可能吗?如果没有,我的方法是在DLL二进制文件中包含版本名称是否合理?
(我知道场景建议重构代码可能是必要的,但我正在寻找一个短期解决方案,因为我们排序。使用GAC也是可能的,但是现在我们想坚持分发DLL与每个应用程序。)
答案 0 :(得分:3)
我通常让每个项目(或更常见的是,每个解决方案)都有一个“lib”目录,我在其中放置解决方案所依赖的程序集。这意味着每个解决方案都独立于其他解决方案。好吧,至少有点;每个lib目录中的依赖关系仍然需要相互配合。但它确实提供了一种情况,即每个解决方案都可以单独更新,而不会破坏其他解决方案。