我的很多项目都包含Castle/NHibernate/Rhino-Tools堆栈。令人困惑的是Castle依赖于一些NHibernate库,NHibernate依赖于Castle库,而Rhino-Tools两者都依赖。
这三个项目都是在我的机器上构建的,但是我觉得复制NHibernate/Castle库有点多余,因为我是使用NHibernate和Castle构建的库构建Rhino-Tools的。
现在,我在我的项目树中的/thirdparty/libs文件夹中包含了单独文件夹中的所有项目。我是否应该在我的项目中只有/thirdparty/ libs /rhino-tools,并从那里使用Castle/NHibernate库?这在不复制文件方面似乎是合乎逻辑的,但我也喜欢将每个项目放在它自己的不同文件夹中。
你对此有何看法?
发布于 2010-06-11 21:25:16
这是我们试图在Refix open source project on CodePlex中解决的问题之一。
其思想是,Refix将解析解决方案中的所有项目,并且在项目编译之前,将必要的二进制文件从计算机上的单个本地存储库复制到解决方案树中的文件夹中,并将项目指向它们。这样,就不需要提交二进制文件了。您的本地Refix库将从远程库中提取二进制文件(我们在repo.refixcentral.com上设置了一个库),您可以为您的团队/部门/公司设置一个中间库,该库可以保存任何未集中保存的其他软件。
它还将尝试解决版本号冲突- Visual Studio可能会过于容忍不匹配的组件版本号,导致解决方案在运行时编译但在加载依赖项失败时失败,因为需要两个不同的版本。
因此,要回答“如何在.Net项目中打包外部库”的问题,我们的愿景是不要这样做-您只需在构建脚本中包含一个重修复步骤,并让它为您操心。
发布于 2009-02-13 08:33:18
我对每个文件都使用一个文件夹,这似乎是惯例。
,
发布于 2009-02-13 09:39:50
将额外的探测路径添加到app.config文件,以定位依赖项dll。这样你就可以只有一份你想要的东西了。尽管使用此功能有一些怪癖(您必须以某种方式创建文件夹结构)。有关该标记的更多详细信息,请查看here。
https://stackoverflow.com/questions/545166
复制相似问题