类库 - 参考 - 复制本地的可重用性?

时间:2011-09-22 21:42:15

标签: c# .net visual-studio visual-studio-2010

我有一个类库项目,我们称之为CoreLib。 CoreLib有两个对第三方DLL文件1.dll和2.dll

的引用

因为我非常喜欢可重用性,所以我希望能够在尽可能多的地方使用CoreLib。

因此,如果我有一个名为BigProjectA的项目和另一个名为BigProjectB的项目,并且他们需要利用CoreLib提供的功能,我所要做的就是在这些项目中添加对CoreLib的引用(BigProjectA和BigProjectB)。

这很好,除非我将输出文件夹(bin目录)复制到另一个人的计算机上,我不能保证他们的机器上有1.dll和2.dll。

为此,我只为CoreLib项目中的1.dll和2.dll引用设置了Copy Local to True。

构建CoreLib项目时,我可以看到1.dll,2.dll和CoreLib.dll文件。那是完美的!

但是在引用CoreLib的项目中,只复制了CoreLib.dll,而不是1.dll和2.dll。

我错过了什么吗?将Local set复制为True,但仅复制CoreLib项目的副本。所以即使它们在同一个解决方案中,并且我将CoreLib作为项目引用添加到其他项目中,我仍然没有看到1.dll和2.dll复制到其他bin / Debug,bin / Release文件夹其他项目(BigProjectA和BigProjectB)。

有一个简单的解决方案吗?

3 个答案:

答案 0 :(得分:0)

简单的解决方案是:

  1. 在具有CoreData.DLL二进制引用的项目中引用1.DLL和2.DLL
  2. 将CoreData添加为BigProjectA和BigProjectB的项目引用,而不是作为二进制引用
  3. 在第一个场景中,编译器不会自动输出CoreData的依赖项。如果将CoreData项目添加到解决方案中,则会输出其依赖项 。因此,要将CoreData用作二进制引用,还必须引用其依赖项。

答案 1 :(得分:0)

没有错。在项目BigProjectABigProjectB中,您只引用了CoreLib,因此他们“关心”只应对它,因为他们对它的依赖关系没有任何线索。您可以采取哪些措施来解决这类问题,例如在BigProject..中添加PostBuildVEent以复制CoreLib依赖项。

或者,如果可以的话,添加对CoreLib项目的引用。

另一种解决方案是将DI视为一种技术,以避免引用的强耦合。因此,如果在BigProjectAB中您不关心CoreLib中第三方库提供的功能,那么您应该只需复制CoreLib即可。

答案 2 :(得分:0)

好的答案家伙......但实际上我最终只使用了ILMerge。看起来比较安全/不那么烦人。

谢谢你