2017-04-06 278 views
1

我试图解决在几个类库中引用共享项目的问题。在解决方案结构中引用共享项目

内部溶液项目之间的参考文献是:

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

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

“同一类”两个类库和类文库B

存在的类型是有办法,使这项工作,否则我建议立即进行删除替换共享项目与经典类库?

+0

只要确保两个类都在不同的命名空间下,问题就解决了。 –

+0

每个类库都有不同的名称空间,共享项目中的类具有特定的名称空间,但它在其他库中共享 – Kazenga

+1

当然存在相同的类型。您将它编译到每个DLL中。它位于A,B,*和* C中。有关详细信息,请参阅标记为重复的内容,以了解这与在多个项目中引用常见的独立DLL有什么不同。共享项目功能是为了便于在一次编译DLL无法工作的场景(例如针对完全不同的平台)中共享代码。就个人而言,我仍然会为每个平台编译DLL,但是VS提供了将整个代码合并到引用项目中的功能。这更像是添加现有文件作为链接,而不是参考。 –

回答

1

“共享项目”实际上是一种在多个项目之间共享源代码而不必构建DLL(如在类库中)的方式。您可以将其视为将SharedProject的源代码粘贴到类库A和类库B中。将文本复制到类库A和类库B中。

它应该相当明显,此时类库A和类库B确实具有相同的类定义在SharedProject中,他们都定义了他们,而不是两个都提到相同的类。

您的初始直觉是正确的,正确的做法是用类库替换它,这正是它的目的。然后,您将拥有A和B引用的SharedProject.dll,然后C将引用A.dll,B.dll和SharedProject.dll,并且它应该都可以正常运行(禁止版本不匹配)。

相关问题