在几个解决方案项目中引用共享项目

Sin*_*atr 5 c# shared-project

我正在努力修复警告

警告CS0436:'...\SharedProject1\SharedProject1\Class1.cs'中的类型'Class1'与'ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'中的导入类型'Class1'冲突.使用'...\SharedProject1\SharedProject1\Class1.cs'中定义的类型.WpfApplication1 ...\SharedProject1\WpfApplication1\MainWindow.xaml.cs

摄制:

  • 用3个项目创建解决方案:

SharedProject1(向其添加新类)

namespace SharedProject1
{
    public class Class1() { }
}
Run Code Online (Sandbox Code Playgroud)

ClassLibrary1的

namespace ClassLibrary1
{
    public class Class1 { }
}
Run Code Online (Sandbox Code Playgroud)

WpfApplication1(将其添加到MainWindow构造函数)

public MainWindow()
{
    InitializeComponent();
    var a = new SharedProject1.Class1();
    var b = new ClassLibrary1.Class1();
}
Run Code Online (Sandbox Code Playgroud)
  • 参考SharedProject1在两个ClassLibrary1WpfApplication1;

  • 建立,你会得到一个警告.

问题:如何修复警告?

Jar*_*zek 5

更改依赖架构:

Shared -> Class
Shared -> Application
Run Code Online (Sandbox Code Playgroud)

到:

Shared -> Class -> Application
Run Code Online (Sandbox Code Playgroud)

即:从Application对 的直接引用中删除Shared

第一个模式导致将同一类内置到 2 个 dll 中。这就是导致冲突的原因。在第二个模式中,共享库内置于Classdll 中,因此也可以访问Application.

第一个模式就可以了,如果Class如果和Application彼此独立

所有这一切都是因为共享项目不生成库。因此,人们必须考虑让它出现在图书馆的某个地方。通常只在一处。这通常意味着每个共享库只能被引用一次。