6

我正在尝试修复警告

警告 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() { }
}

类库1

namespace ClassLibrary1
{
    public class Class1 { }
}

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

public MainWindow()
{
    InitializeComponent();
    var a = new SharedProject1.Class1();
    var b = new ClassLibrary1.Class1();
}
  • SharedProject1中的引用;ClassLibrary1WpfApplication1

  • 构建,您将收到警告。

问题:如何修复警告?

4

3 回答 3

4

从以下位置更改依赖项架构:

Shared -> Class
Shared -> Application

到:

Shared -> Class -> Application

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

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

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

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

于 2017-01-14T20:47:12.933 回答
3

当您只有一个类库时,Jarekczek 的解决方案可以正常工作,但是一旦您添加另一个也引用共享项目的类库,您就会再次收到相同的警告。

解决方案可能很明显,但如果它不在这里,它就是......

您可以再创建一个名为“Common”的普通类库项目,它本身不包含任何类,而仅引用共享项目。它充当共享代码的“容器”。

所以参考树可能看起来像这样:

SharedProject -> Common
Common -> ClassLibrary1
Common -> ClassLibrary2
ClassLibrary1 -> Application
ClassLibrary2 -> Application
Common -> Application
于 2017-04-19T13:51:33.733 回答
0

尝试将您的代码更改为:

       namespace SharedProject1{public class Class1() { }}

在您的项目 WpfApplication1 中,您必须添加对 SharedProject1 和 ClassLibrary1 的引用,之后它会很糟糕:

我已经按照您的规范为您创建了一个项目:

项目示例

于 2016-04-14T09:19:11.843 回答