Visual Studio 如何在一个项目中使用2个库(包含一个共享类)?

e37o9pze  于 2023-02-24  发布在  其他
关注(0)|答案(2)|浏览(197)

我有一个共享项目(SharedProject1),其中包含名为myDataInfo.cs的类和2个库(Common.csproj and CustomControls.csproj)
,这两个库使用SharedProject1。现在,我正在名为Test.csproj的项目中使用这两个库。现在,当我想使用myDataInfo.cs时,我收到一条错误消息,显示
myDataInfo.cs存在于通用.csproj和自定义控件.csproj中

brtdzjyr

brtdzjyr1#

共享项目共享源代码,而不是编译的代码。这意味着如果两个项目共享相同的代码,它们将编译两次。这导致Common中有两个不同的类型myDataInfoCustomControls中有一个myDataInfo。它们碰巧具有相同的名称,但它们是两个不同的类型。这是因为类型是由它们的fully qualified type names标识的,fully qualified type names由程序集名称规范、命名空间规范和类型名称组成。
因此,必须共享程序集(DLL、EXE、包或项目引用),而不是源代码(共享项目)。

┌────────────────────┐
        │ SharedProject1     │
        │                    │
        │ (should be         │
        │  SharedLibrary1)   │
        │                    │
        └────────────────────┘
          ▲       ▲       ▲
          │       :       │
          │       :       │
          │       :       │
  ┌───────┴──┐    :   ┌───┴─────────────┐
  │ Common   │    :   │  CustomControls │
  └──────────┘    :   └─────────────────┘
           ▲      :    ▲
           │      :    │
       ┌───┴──────┴────┴──┐
       │      Test        │
       └──────────────────┘

Test中,只有当Test直接访问myDataInfo时才需要引用SharedProject1
另见:

rhfm7lfc

rhfm7lfc2#

库不应该使用项目。项目依赖于库。看起来像是你的应用程序的结构问题。我对依赖树的建议:测试.csproj -〉共享项目1.csproj-〉(通用.csproj、自定义控件.csproj)

相关问题