.dll参考Vs.项目参考

时间:2014-09-15 15:20:49

标签: c# visual-studio-2012

我有一个项目(项目B),它引用了另一个项目(项目C),并使用了该项目中的一些方法。 现在,我有第三个项目(项目A),它只需要使用项目B方法(这些方法使用项目A方法) - 项目A使用项目C但不是直接使用。

  1. 我是否需要添加对项目C的引用或仅添加项目B?
  2. 如果我要添加.dll参考,我可以添加对项目B的引用吗?

2 个答案:

答案 0 :(得分:4)

  
      
  1. 我是否需要添加对项目C的引用或仅添加项目B?
  2.   

Just B就足够了。如果要在Visual Studio中添加项目引用,则添加B的项目引用就足够了。在编译时,项目(B和C)的dll将被复制到A的可执行路径

  
      
  1. 如果我要添加.dll参考,我可以添加对项目B的引用吗?
  2.   

在这种情况下,您只需要添加对项目B dll的引用,但项目C的dll也应该在可执行文件夹中,因为项目{{ 1}}取决于它。

在这两种情况下,您都不必明确引用项目C,因为项目A中没有直接调用项目C.但请记住,在这两种情况下,您最终都会在项目中使用Project C dll可执行文件。

您可能会看到:Managing Project References - MSDN

看到@ David的comment,您无法在项目中使用循环引用。项目A使用项目B和项目B的方法,使用项目A的方法,您将无法编译此代码。您需要重新设计代码并在项目中使用层次结构,例如A - > B - > C

请参阅:Why are circular references in Visual Studio a bad practice?

答案 1 :(得分:2)

您很可能需要两者,因为B取决于C。如果有一个公开类型C的方法签名,你肯定需要引用它来编译。否则,你可能会在运行时需要它。

如果可能,请始终将其添加为参考,因为IntelliSense会注意到项目引用,并会在编译之前注意方法更改。