.NET解决方案-多个项目共享一个项目我们目前拥有一个快速增长的C#代码库。目前我们有大约10个项目,分为通常的类别、通用/实用程序、网络层、数据库、用户界面组件/控件等。我们偶尔会遇到循环依赖,其中项目x依赖于y中的某些东西,反之亦然。我们正在考虑将项目合并为一个,并且只使用结构文件夹/命名空间进行管理。我们有一个Java项目,当然只使用文件夹/包进行组织,所以我们不确定拥有多个项目的好处(如果有的话)。我们的项目都不需要特殊的项目属性,除了主要运行的项目,我们可以将其分开(并且非常薄)。有没有人有过为什么一个项目比许多项目更好/更差的经验,并且可以就最佳方法提出建议?循环依赖的任何问题在这两种方法中都有用。任何意见表示赞赏。根据我的经验,如果您愿意,跨多个项目创建单个可执行文件的代码分离可能会很有用。就个人而言,我的大部分决定都是基于第二点。我认为应用程序的一部分可能是我在其他应用程序中可能需要的更通用的库?把它放在一个单独的项目中。否则,正如您所指出的,拥有一个项目通常会使开发更容易。关于循环依赖:推荐的解决方法是将引用的东西的接口放到第三个项目中。例如,如果您有两个应用程序都通过远程处理共享某些对象,请将共享对象的接口放在一个库项目中以确保它们对两个应用程序都可用。在不了解应用程序的确切设计的情况下,很难提供更具体的建议。如果您的项目存在循环依赖,则表示代码设计存在问题,而不是解决方案/项目模型存在问题。在项目之间建立依赖关系时,始终将一个视为“较低”,将另一个视为“较高”。更高级别的项目(例如Web界面)应该只依赖于较低级别的项目。较低的项目(例如实用程序)不应依赖于较高的项目,例如Web界面。如果发生这种情况,则意味着您的较高级别项目确实应该位于较低级别的项目中,反之亦然。通常,拥有多个VS项目(在VS解决方案中)仅在这些情况下才有意义。如果你说循环依赖有问题,那么你的代码设计就有问题。也许您可以将多个项目使用的逻辑放在一个类库中,该类库旨在在多个项目中重用。一般来说,如果你真的不需要,我会说你不应该添加更多的项目。拆分成项目意味着增加更多的复杂性,所以当你这样做时,你应该从中获得合理的好处。我们注意到,随着项目数量的增加,VisualStudio的性能会显着下降。对于包含大约12个C#项目的解决方案,从“调试”配置切换到“发布”配置这样简单的事情可能需要15秒。此外,作为Reed关于构建时间的评论的对比,我看到构建时间在增长,因为VisualStudio似乎在项目开销上花费了大量时间。实际编译时间似乎很快,但从命中构建到能够运行的总时间非常重要。我的建议是将项目数量保持在最低限度。如果您出于充分的理由需要多个项目,则在必要时使用它们,但更愿意将它们放在一起。如有必要,您还可以重构以将项目一分为二。将一个解决方案分成不同的项目(以及组件)有多种原因,主要归结为重用和职责分离。现在您的目标应该是让程序集(又名项目)对解决方案中的其他程序集具有最小的依赖性,否则您也可以在更少的程序集中拥有所有内容。例如,如果您的UI组件对数据访问代码有很强的依赖性,则可能会出现问题。实际上,它归结为针对通用接口进行编程。但是请注意:当我说“否则你可能会在程序集中拥有更少的东西”时,我并不一定暗示这是错误的做法。要实现真正的关注点分离,您需要编写更多代码,并且必须更多地考虑您的设计。所有这些额外的工作对你来说可能不是很有回报,所以仔细考虑一下。您可能会发现以下Martin文章很有价值:设计原则和设计模式(PDF)(Java)。C#中的修订版专门适用于C#中的敏捷原则、模式和实践。两者都表达了不同的准则,可以帮助您确定自己的归属。但是,正如所指出的,循环依赖表示设计问题或某个组件属于不同的组件。多个项目允许跨多个应用程序更好地重用特定类型。它还缩短了构建时间,因为一些项目不需要为所有代码更改重新构建。单个项目让生活更轻松,因为您不必担心依赖性。只要意识到轻松是有代价的——它还可以让糟糕的设计决策更容易进入代码库。循环依赖,无论是在一个项目中还是跨多个项目,通常是一种设计缺陷,而不是一种需求。在我工作的地方,我们选择了一种方法,目标是每个解决方案都有一个项目。所有代码库项目也有一个测试工具应用程序和/或一个单元测试应用程序。一旦代码库通过测试,发布版本(当然使用Xml文档文件)就会传输到“Live”文件夹。任何需要这些其他项目功能的项目都必须从“实时”文件夹中引用它们。优势非常明显。任何项目总是访问已知的工作代码。永远不可能引用正在进行的程序集。每个程序集都对代码进行测试,从而更容易理解错误的来源。较小的解决方案更易于管理。希望这会有所帮助!涂从一个项目开始。将代码库拆分为更多项目的唯一好处是简化构建时间。当我有一些我真的想从主项目中分离出来的可重用功能时,我会为它启动一个全新的解决方案。以上就是C#学习教程:.NET解决方案-多项目一项目共享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
