Visual studio 项目参考与DLL参考-哪个更好?

Visual studio 项目参考与DLL参考-哪个更好?,visual-studio,reference,Visual Studio,Reference,我知道关于这个主题还有其他问题,我已经看过了,但我想看到更多关于这两个方面的讨论和信息-将项目添加到解决方案并引用项目,还是添加对.dll的引用是更好的做法,在调试和发布模式下构建和测试时,项目引用非常有用。如果您直接添加一个DLL,那么您将被锁定到该特定DLL的构建方式中。项目参考允许这是一个构建时决策。这不是一个很大的选择。如果两个项目都有解决方案,则使用项目引用。如果您的解决方案没有项目,则必须使用程序集引用 因此,真正的问题可能是:我是否为这两个项目创建了解决方案?是的,只要项目仍处于调

我知道关于这个主题还有其他问题,我已经看过了,但我想看到更多关于这两个方面的讨论和信息-将项目添加到解决方案并引用项目,还是添加对.dll的引用是更好的做法,在调试和发布模式下构建和测试时,项目引用非常有用。如果您直接添加一个DLL,那么您将被锁定到该特定DLL的构建方式中。项目参考允许这是一个构建时决策。

这不是一个很大的选择。如果两个项目都有解决方案,则使用项目引用。如果您的解决方案没有项目,则必须使用程序集引用


因此,真正的问题可能是:我是否为这两个项目创建了解决方案?是的,只要项目仍处于调试阶段,并且可能需要修复错误。

如果您只有dll,那么您就必须使用dll引用(显然)


如果你有来源,那么通常最好使用项目参考。在某些情况下,您可能有一个永远不会改变的实用程序库,但是如果您有一点点的机会需要一个bug修复,那么拥有一个项目参考将使调试变得更加容易。

相对于您的项目架构,您应该始终坚持在您的问题域内的项目。如果适用于您的环境,您应该使用GAC。

摘要-按项目与按DLL列出的项目参考

项目参考

  • 代码是可见的
  • 查找所有引用,例如类上的引用(因为代码可见)
  • 更好地进行测试(总体而言)
  • 更好地进行代码重新设计(影响)
DLL引用

  • 代码是隐藏的
  • 框架和项目之间的分离(用于框架交付)
  • 更快的编译(因为DLL已经编译)

当您有多个解决方案时,情况会更复杂。使用项目引用可以中断包含引用项目而非引用项目的其他解决方案的生成。Visual Studio然后以静默方式(!)将项目引用解析为对bin/Debug中dll的文件引用,如果解决方案在发行版中编译,这是意外的,并且会中断。您可以通过始终先将父项目添加到解决方案中来解决此问题,并且不要添加任何没有父项目(已引用)的项目项目必须添加-如果在项目B中的方法上单击“查找所有引用”时对项目A使用dll引用,则项目A中的方法引用根本不会出现=错误的配方您所说的是正确的。同时,在使用.NET程序集时,它不会引起问题。它们包含IL代码,该代码稍后在第一次运行时在目标计算机上编译。这是一个非常好的决策时间。GAC如何处理VisualStudio项目文件中的项目引用和dll引用?