我的很多项目都包含 CaSTLe/NHibernate/Rhino-Tools 堆栈。令人困惑的是,CaSTLe 依赖于一些 NHibernate 库,NHibernate 依赖于一些 CaSTLe 库,而 Rhino-Tools 依赖于两者。
我已经在我的机器上构建了所有三个项目,但我觉得复制 NHibernate/CaSTLe 库有点多余,因为我使用 NHibernate 和 CaSTLe 构建的结果库构建了 Rhino-Tools。
现在,我将所有项目包含在项目树的/thirdparty/libs 文件夹中的单独文件夹中。我是否应该在我的项目中只包含/thirdparty/libs/rhino-tools 并从那里使用 CaSTLe/NHibernate 库?这在不复制文件方面似乎合乎逻辑,但我也喜欢将每个项目放在自己不同的文件夹中。
您对此有何看法?
最佳答案
这是我们在 Refix open source project on CodePlex 中试图解决的问题之一。 .
Refix 的想法是解析您解决方案中的所有项目,并在您的项目编译之前,将必要的二进制文件从您机器上的单个本地存储库复制到解决方案树中的一个文件夹中,并将项目指向它们。这样,就无需提交二进制文件。您的本地 Refix 存储库将从远程存储库中提取二进制文件(我们正在 repo.refixcentral.com 上设置一个),您可以为您的团队/部门/公司设置一个中间存储库,它可以容纳任何未集中存储的附加软件.
它还将尝试解决冲突的版本号 - Visual Studio 可能容忍不匹配的组件版本号,导致解决方案编译但在运行时无法加载依赖项时失败因为需要两个不同的版本。
所以要回答“如何在 .Net 项目中打包外部库”这个问题,我们的愿景是您不需要 - 您只需在构建脚本中包含一个 Refix 步骤,让它为您操心.
关于c# - 您如何将外部库打包到您的 .Net 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/545166/