如何在具有多个子项目的 Visual Studio 中为 C# 解决方案设置通用值(抽象)?

Posted

技术标签:

【中文标题】如何在具有多个子项目的 Visual Studio 中为 C# 解决方案设置通用值(抽象)?【英文标题】:How do I set common values (abstract) for a C# solution in Visual Studio with multiple sub projects? 【发布时间】:2021-11-16 20:01:08 【问题描述】:

我有一个包含多个项目的解决方案,每个项目都连接到同一个数据库并使用我想在某处设置而不是手动复制的重叠常量值。我在网上尝试了很多东西,比如创建一个自定义类并将项目链接到它,在项目配置文件中设置常量(它不像指南声称的那样存在)等等。经过一个多小时的搜索和实验,我一直无法弄清楚这一点,所以如果您有任何想法,请告诉我。结构如下(蓝色下划线部分为列表中的部分项目):

【问题讨论】:

1.另一个包含通用内容的项目 - 2. 通过“添加为链接”添加到所有项目的文件 - 3. 部署到 app 文件夹并由所有子项目读取的 XML 或 JSON 文件 之前有人建议将类“作为链接”添加,但我没有看到任何选项。你是说我适合做一个项目吗? 【参考方案1】:

您可以在解决方案下创建另一个项目来包含您的课程。

然后所有其他项目都可以引用该项目,这意味着所有其他项目都可以使用相同的功能,而无需复制任何内容。

【讨论】:

参考如何?我试过“使用”,但没有看到。 具有“添加参考”功能【参考方案2】:

我将用更多信息扩展之前的正确答案。

您的解决方案结构需要仔细考虑,因为它是应用程序设计/架构的组合,可带来可扩展性、可扩展性和未来可维护性。

以下面的文章Common web application architectures为例。

您可以看到带有解决方案的特定项目的清洁架构(AKA Hexagonal) 您可以看到较旧的设计,其中 DB 访问将进入名为 ..DAL 的项目中

简单的项目可以使用第二个,业务更丰富的第一个或介于两者之间。

查看this article on shared code projects 了解有关网络标准项目的信息

【讨论】:

【参考方案3】:

所以上面的内容很有帮助,但比它需要的要复杂得多。显然我看到的其他答案确实有效,但需要阅读一堆其他页面才能弄清楚整个谜题。工作步骤是:

    为常量创建一个带有公共参数的类 将该类放置在您的解决方案空间中的某个位置。当我在解决方案上创建它时,它被放置在我的树中的“解决方案项目”中(这是文件系统上解决方案的根文件夹)。 右键单击每个项目并添加>现有项目并指向类。关键(我读过的大多数东西都没有)是“添加”按钮有一个下拉箭头,可让您将其更改为“添加为链接” 在每个项目中(添加为文件的链接后),您可以直接将值引用为 NAMEOFCLASS.NAMEOFCONST,但前提是您将它​​们声明为 public const SOMETYPE SOMENAME。如果没有 const,则无法直接引用该值

请注意,此修复程序位于 .sln 文件本身中,并且需要成为提交的一部分,否则不会产生任何效果。如果您可以使用“包含”或其他东西将文件带入上一级文件夹,那就太好了,但我们到了。

【讨论】:

"没有 const" - 静态也可以工作。

以上是关于如何在具有多个子项目的 Visual Studio 中为 C# 解决方案设置通用值(抽象)?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个子项目的项目列表的自定义适配器?

cmake - 支持 Visual Studio 过滤器

如何在 Visual Studio 中的单个操作中打开多个文件

Visual Studio 解决方案:静态项目还是共享项目?

使用 Maven 的具有多个子项目的 Spring MVC 项目的包结构

具有多个文件夹的 Visual Studio 项目