C# · 12月 23, 2021

c# – 为什么我需要引用这个程序集,即使它没有被使用

我有一个如下的架构:

数据(处理我们的实体框架内容的类库)

组件(引用数据库的中间层类库)

WebOffice(引用组件库的Web应用程序,但不是数据库)

现在,我有以下代码片段(它存在于我们的Components.Payment.cs中;并且tblPayment包含在我们的数据库中.):

public static Payment Retrieve(int id) { var t = repository.Retrieve(id); //the above line returns a tblPayment object if (t != null) return new Payment(t); return null; } public static Payment Retrieve(tblPayment tblPayment) { return new Payment(tblPayment); }

我添加之后; WebOffice项目出现以下错误:
errorCS0012:类型’Data.Model.tblPayment’在未引用的程序集中定义.您必须添加对程序集’Data,Version = 3.5.0.0,Culture = neutral,PublicKeyToken = 749b8697f3214861’的引用.

现在,这对我来说没有多大意义,因为WebOffice项目根本没有调用Retrieve(tblPayment tblPayment)方法. (那只在组件库中使用)

有什么理由要求数据参考?我是否需要引用引用库引用的每个库? (试着快说5次……)

解决方法 这里的一般规则是必须将对另一个程序集的公共接口中任何类型的包含程序集的引用添加到项目中.否则编译器不知道如何解析该类型.

要回答第二个问题,您不需要添加对包含仅在内部用于其他程序集的类型的程序集的引用.