【问题标题】:Cycles detected检测到的周期
【发布时间】:2019-09-08 22:33:45
【问题描述】:

我的项目没有在同一个解决方案中添加对另一个的引用。

我为网站创建了一个项目,并将程序的所有部分抽象为 .Net 类库(我的模型在不同的类库中,接口在不同的类库中,业务逻辑在不同的类库中)。我正确地引用了所有项目,并且我还尝试创建我称为 EntityRepository 的东西,我最初将 DbContext 保存在里面。但是由于我想使用 Microsoft 的 Identity 实现然后将逻辑搭建出来,我无法从另一个项目中找到搭建脚手架时所需的 DbContext,因此我不得不将该项目排除在解决方案之外。通常,当您创建项目并选择单用户身份验证时,.Net 核心会在项目中添加一个初始 DbContext。因此,在将 AspNetCore Identity 的实现搭建到我的项目中时,我必须选择 DbContext。因此,我的业务逻辑分为两个方面。另一个逻辑在同一个解决方案的另一个项目中,身份和身份验证在启动项目中,即 Web 应用程序。当我尝试将实现业务逻辑的服务从另一个项目调用到 Web 项目中时,它无法添加对服务项目的引用。我现在手动添加了参考。之后我现在看到一个错误写了

Detail Error:
Severity    Code    Description Project File    Line    Suppression State
Error   NU1108  Cycle detected. 
  CBTSoftware.Web.Host -> CBTSoftware.Services -> CBTSoftware.Web.Host. CBTSoftware.Web.Host    C:\Users\Tavershima\source\repos\CBTSoftware\CBTSoftware.Web.Host\CBTSoftware.Web.Host.csproj   1```
How can I resolve this?

【问题讨论】:

  • 您是如何手动添加引用的?当您无法添加参考时,“通常”视觉工作室已检测到您将创建一个依赖循环。检查CBTSoftware.ServicesCBTSoftware.Web.Host 之间的用法,并选择一个项目应该引用另一个的方向。您不能在两个方向都有参考。
  • ApplicationDbContext 位于 Web.Host 项目中,所以我在 services 项目中调用它来完成所有的数据库工作。现在我想将所有这些服务从 Services 项目调用到 Web.Host 项目中的剃须刀页面。
  • 我通过编辑csproj文件手动添加了参考

标签: c# asp.net-core visual-studio-project


【解决方案1】:

考虑创建一个项目来包含您的 EntityRepository,例如 CBTSoftware.Data,并从您的服务项目中添加对它的引用:

CBTSoftware.Services -> CBTSoftware.Data

然后,您可以继续从您的 Web 项目中引用您的服务项目:

CBTSoftware.Web.Host -> CBTSoftware.Services

您仍然可以在您的Startup.cs 文件中配置您的EntityRepository,因为它会传递地了解您的CBTSoftware.Data 项目。只需确保从您的服务项目中删除对您的 Web 项目的引用,因为这会创建一个循环。

【讨论】:

    【解决方案2】:

    我已经通过删除我在Web Project 中创建的DbContext 并使用我在另一个项目中创建的.Net Library 解决了这个问题,然后我在StartUp.cs 中添加了这行代码文件

    services.AddDbContext<CBTDbContext>(options =>
                    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
    

    通过添加它,我能够在Web Project 中找到DbContext。 然后,当我尝试添加迁移时,又出现了另一个问题。我会在另一篇文章中打开它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      • 2015-07-22
      • 2020-10-13
      • 2016-08-14
      相关资源
      最近更新 更多