在解决方案结构中引用共享项目[重复]

Posted

技术标签:

【中文标题】在解决方案结构中引用共享项目[重复]【英文标题】:Referencing shared project within solution structure [duplicate] 【发布时间】:2017-09-01 02:21:22 【问题描述】:

我正在尝试解决在几个类库中引用共享项目的问题。

在解决方案中,项目之间的引用是:

类库 A -> SharedProject 类库 B -> SharedProject 类库 C -> SharedProject 类库 C -> 类库 A 类库 C -> 类库 B

在共享项目中,我只有一个要共享的具有逻辑的类,因此在每个类库项目中,我都使用共享项目中的相同类。但是在构建之后,我在类库 C 中得到以下错误:

类库A和类库B中都存在“同一个类”类型

有没有办法让这个工作,或者我应该用经典类库替换共享项目?

【问题讨论】:

只要确保两个类在不同的命名空间下,问题就解决了。 每个类库有不同的命名空间,共享项目中的类有特定的命名空间,但在其他库之间是共享的 当然存在相同的类型。您将其编译到每个 DLL 中。它位于 A、B、 C 中。有关这与跨多个项目引用通用的独立 DLL 有何不同的详细信息,请参阅标记的重复项。共享项目功能有助于在一次编译的 DLL 无法工作的情况下共享代码(例如,针对完全不同的平台)。就个人而言,我仍然会为每个平台编译 DLL,但 VS 提供了将整个代码合并到引用项目中的这一功能。这更像是添加现有文件作为链接,而不是参考。 【参考方案1】:

“共享项目”实际上是一种在多个项目之间共享源代码的方式,而无需构建 DLL(如在类库中)。你可以把它想象成从字面上将 SharedProject 的源代码复制粘贴到类库 A 和类库 B 中。

此时应该很明显,类库 A 和类库 B 确实在 SharedProject 中定义了相同的类,但是它们都定义了它们,而不是都引用 相同的类。

您最初的直觉是正确的,正确的做法是用类库替换它,这正是它的用途。然后,您将拥有一个 A 和 B 都引用的 SharedProject.dll,然后 C 将引用 A.dll、B.dll 和 SharedProject.dll,这一切都应该没问题(除非版本不匹配)。

【讨论】:

以上是关于在解决方案结构中引用共享项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个项目共享的 xaml 文件中添加用户控件的引用

Visual Studio 项目正在引用已删除的共享项目

Windows 窗体引用和具有冲突导入类型的单例

VS2017 无法添加对共享项目的引用/共享项目为空

.Net Core - 在解决方案中引用另一个项目可防止系统和其他依赖项被识别

SSDT 数据库项目中对系统数据库的引用变得重复