我正在努力修复警告
警告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
摄制:
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在两个ClassLibrary1和WpfApplication1;
建立,你会得到一个警告.
问题:如何修复警告?
更改依赖架构:
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彼此独立
所有这一切都是因为共享项目不生成库。因此,人们必须考虑让它出现在图书馆的某个地方。通常只在一处。这通常意味着每个共享库只能被引用一次。