在解决方案的多个项目中引用共享项目
Referencing shared project in several projects of solution
我正在尝试修复警告
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
转载:
- 创建包含 3 个项目的解决方案:
SharedProject1(添加新的class)
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();
}
在ClassLibrary1
和WpfApplication1
中引用SharedProject1
;
构建,你会得到一个警告。
问题:如何修复警告?
尝试将您的代码更改为:
namespace SharedProject1{public class Class1() { }}
在您的项目 WpfApplication1 中,您必须添加对 SharedProject1 和 ClassLibrary1 的引用,之后它会崩溃:
我已经根据您的规范为您创建了一个项目:
更改依赖模式:
Shared -> Class
Shared -> Application
至:
Shared -> Class -> Application
即:从 Application
中删除对 Shared
的直接引用。
第一个模式导致相同的 class 内置到 2 个 dll 中。这就是导致冲突的原因。在第二个模式中,共享库内置于 Class
dll 中,因此也可以访问 Application
.
如果 Class
和 Application
相互独立,第一个模式就可以了。
所有这一切都是因为共享项目不会生成库。因此,必须考虑让它出现在图书馆的某个地方。通常只在一个地方。这通常意味着,每个共享库应该只被引用一次。
当你只有一个 class 库时,Jarekczek 的解决方案工作正常,但一旦你添加另一个也引用共享项目的 class 库,你就会再次收到相同的警告。
解决方案可能很明显,但如果这里没有,那就是...
您可以再创建一个名为 'Common' 的普通 class 库项目,它本身不包含任何 classes,但仅引用共享项目。它作为共享代码的 'container'。
因此参考树可能如下所示:
SharedProject -> Common
Common -> ClassLibrary1
Common -> ClassLibrary2
ClassLibrary1 -> Application
ClassLibrary2 -> Application
Common -> Application
我正在尝试修复警告
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
转载:
- 创建包含 3 个项目的解决方案:
SharedProject1(添加新的class)
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();
}
在
ClassLibrary1
和WpfApplication1
中引用SharedProject1
;构建,你会得到一个警告。
问题:如何修复警告?
尝试将您的代码更改为:
namespace SharedProject1{public class Class1() { }}
在您的项目 WpfApplication1 中,您必须添加对 SharedProject1 和 ClassLibrary1 的引用,之后它会崩溃:
我已经根据您的规范为您创建了一个项目:
更改依赖模式:
Shared -> Class
Shared -> Application
至:
Shared -> Class -> Application
即:从 Application
中删除对 Shared
的直接引用。
第一个模式导致相同的 class 内置到 2 个 dll 中。这就是导致冲突的原因。在第二个模式中,共享库内置于 Class
dll 中,因此也可以访问 Application
.
如果 Class
和 Application
相互独立,第一个模式就可以了。
所有这一切都是因为共享项目不会生成库。因此,必须考虑让它出现在图书馆的某个地方。通常只在一个地方。这通常意味着,每个共享库应该只被引用一次。
当你只有一个 class 库时,Jarekczek 的解决方案工作正常,但一旦你添加另一个也引用共享项目的 class 库,你就会再次收到相同的警告。
解决方案可能很明显,但如果这里没有,那就是...
您可以再创建一个名为 'Common' 的普通 class 库项目,它本身不包含任何 classes,但仅引用共享项目。它作为共享代码的 'container'。
因此参考树可能如下所示:
SharedProject -> Common
Common -> ClassLibrary1
Common -> ClassLibrary2
ClassLibrary1 -> Application
ClassLibrary2 -> Application
Common -> Application