I am trying to fix warning
Warning CS0436: The type 'Class1' in '...\SharedProject1\SharedProject1\Class1.cs' conflicts with the imported type 'Class1' in 'ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in '...\SharedProject1\SharedProject1\Class1.cs'. WpfApplication1 ...\SharedProject1\WpfApplication1\MainWindow.xaml.cs
Repro:
- create solution with 3 projects:
SharedProject1 (add new class to it)
namespace SharedProject1
{
public class Class1() { }
}
ClassLibrary1
namespace ClassLibrary1
{
public class Class1 { }
}
WpfApplication1 (add this to MainWindow
constructor)
public MainWindow()
{
InitializeComponent();
var a = new SharedProject1.Class1();
var b = new ClassLibrary1.Class1();
}
reference
SharedProject1
in bothClassLibrary1
andWpfApplication1
;build, you will get a warning.
Question: how to fix the warning?
Change the dependency schema from:
to:
That is: remove from
Application
a direct reference toShared
.The first schema results in same class built into 2 dlls. That's what causes the conflict. In the second schema the shared library is built into
Class
dll and thus is also accesible toApplication
.The first schema would be ok, if
Class
andApplication
were independent of each other.All of this is because a shared project does not generate a library. So one must think about making it appear somewhere in a library. Usually only in one place. That usually means, that each shared library should be referenced only once.
Jarekczek's solution works fine when you have only one class library, but as soon as you add another class library which also references the shared project, you get the same warning again.
The solution might be obvious, but if it's not here it is...
You could create one more ordinary class library project named 'Common' which doesn't contain any classes on it's own, but only references shared project. It serves as a 'container' for shared code.
So reference tree could look like this:
Try to change your code as :
In your project WpfApplication1 you must add references to SharedProject1 and ClassLibrary1 ,it hork after that :
I have create a project for you with your specefication :
Project exemple