我正在尝试修复警告
警告CS0436:'... \ SharedProject1 \ SharedProject1 \ Class1.cs'中的类型'Class1'与'ClassLibrary1中的导入类型'Class1'冲突,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null ”。使用'... \ SharedProject1 \ SharedProject1 \ Class1.cs'中定义的类型。 WpfApplication1 ... \ SharedProject1 \ WpfApplication1 \ MainWindow.xaml.cs
摄制:
SharedProject1 (向其添加新课程)
namespace SharedProject1
{
public class Class1() { }
}
ClassLibrary1的
namespace ClassLibrary1
{
public class Class1 { }
}
WpfApplication1 (将其添加到MainWindow
构造函数)
public MainWindow()
{
InitializeComponent();
var a = new SharedProject1.Class1();
var b = new ClassLibrary1.Class1();
}
SharedProject1
和ClassLibrary1
中的参考WpfApplication1
;
构建,您将收到警告。
问题:如何修复警告?
答案 0 :(得分:3)
当您只有一个类库时,Jarekczek的解决方案可以正常工作,但只要您添加另一个同时引用共享项目的类库,您就会再次收到相同的警告。
解决方案可能很明显,但如果它不在这里就是......
您可以再创建一个名为' Common'的普通类库项目。它不包含任何自己的类,但仅引用共享项目。它是一个容器'共享代码。
因此参考树可能如下所示:
SharedProject -> Common
Common -> ClassLibrary1
Common -> ClassLibrary2
ClassLibrary1 -> Application
ClassLibrary2 -> Application
Common -> Application
答案 1 :(得分:2)
从以下位置更改依赖关系架构:
Shared -> Class
Shared -> Application
为:
Shared -> Class -> Application
即:从Application
移除对Shared
的直接引用。
第一个模式导致同一个类内置到2个dll中。这就是导致冲突的原因。在第二个模式中,共享库内置于Class
dll中,因此也可以访问Application
。
如果Class
和Application
相互独立,第一个架构就可以了。
所有这一切都是因为共享项目不会生成库。所以必须考虑让它出现在图书馆的某个地方。通常只在一个地方。这通常意味着每个共享库只应引用一次。
答案 2 :(得分:0)
尝试将代码更改为:
STDOUT
在你的项目WpfApplication1中,你必须添加对SharedProject1和ClassLibrary1的引用,之后它会被引用:
我已经为您创建了一个项目: