【问题标题】:Assembly reference error on not used (and referenced) assembly, why do I this error?未使用(和引用)程序集的程序集引用错误,为什么会出现此错误?
【发布时间】:2014-06-12 09:45:03
【问题描述】:

在我的解决方案中,我有三个项目(Web、业务和数据)都针对 .net 4.5.1。 网络参考商业和商业参考数据。

我需要根据应用程序启动在这三个项目中执行一个初始化方法。所以我在所有项目中都创建了一个 Boot 类。

Business中的Boot类继承自Data中的Boot类,Web中的Boot类继承自Business中的Boot类

所以我有这个代码:

在数据项目中:

namespace Data
{
    public class Boot
    {
        public Boot() 
        {
            // init execution
        }
    }
}

在商业项目中:

namespace Business
{
    public class Boot : Data.Boot
    {
        public Boot() : base()
        {
            // init execution
        }
    }
}

在网络项目中:

namespace Web
{
    public class Boot : Business.Boot
    {
        public Boot() : base()
        {
            // init execution
        }
    }
}

当我编译时,Web 项目中的 Boot 类出现错误:

“Data.Boot”类型是在未引用的程序集中定义的。您必须添加对程序集 'Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'的引用

而且我不明白为什么我的 Web 项目需要引用我的 Data 项目..它从不直接使用 Data.Boot..

【问题讨论】:

  • 如果Data Project's 输出为dll,则将该dll 添加到Business Project 的引用中。
  • 我的业务项目已经引用了 Data.dll,我的 Web 项目引用了 Business.dll
  • 你能在每个班级显示namespaces吗?
  • 另外请澄清所有项目都是使用相同版本的 .Net Framework 构建的?
  • @HassanNisar 我更新了解释,所有项目都针对.net 4.5.1

标签: c# .net inheritance .net-assembly


【解决方案1】:

您必须从您的网络和业务项目中添加对您的数据项目的引用。在您的情况下,您的 Web 层依赖于业务层数据层。

总结一下:

  • Web 项目引用业务项目和数据项目
  • 商业参考数据项目

【讨论】:

  • 好的,如果我不想让我的 Web 项目知道我的 Data 项目,我需要使用另一个系统来同步初始化吗?
  • 如果您的 Web 项目依赖于数据层中的功能,它必须知道这一点。为什么您希望您的 Web 项目不了解数据层?
  • 用另一个数据层替换而不更改我的 Web 项目中的任何内容。当我写这篇文章时,我意识到我不是直接依赖于数据,而是通过业务。我设法找到了另一种方法来级联调用我的初始化。
  • 在这种情况下你应该考虑使用接口。
  • 是的,我知道,但我想避免在这种情况下使用接口:)。我只是使用另一种行为:)。感谢您的回答!
【解决方案2】:

您必须检查业务项目中是否引用了 Data DLL,如果是,您必须清理解决方案并重新构建它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多