检测到周期

For*_*a12 15 c# visual-studio-project asp.net-core

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

我为一个网站创建了一个项目,并将程序的所有部分抽象为 .Net 类库(我的模型在不同的类库中,接口在不同的类库中,业务逻辑在不同的类库中)。我正确引用了所有项目,并且还尝试创建一个名为 EntityRepository 的东西,最初我将 DbContext 保留在其中。但由于我想使用 Microsoft 的 Identity 实现,然后将逻辑搭建起来,我无法从其他项目中找到搭建脚手架时所需的 DbContext,因此我不得不将该项目排除在解决方案之外。通常,当您创建项目并选择单用户身份验证时,.Net core 会在项目中添加一个初始 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?
Run Code Online (Sandbox Code Playgroud)

小智 19

首先,我想对上面回答的人表示感谢,因为他们走上了解决这个问题的正确轨道。就我而言,该问题是由未跟踪文件引起的,并通过运行 * git clean DocumentationNU1108解决了git clean -fxd

  • 我很高兴在这里偶然发现你的帖子!我已经在这个问题上花了几个小时了,却没有更进一步。git clean 确实解决了这个问题。我有奇怪的循环,仅在引用的包中可见,但在包本身中不可见。很难找出问题所在。非常感谢,我变得一无所知! (2认同)

小智 8

我知道这已经很旧了,但我也想在这里添加。

我遇到了与 Sebastian Widz 回答相同的情况,但真正对我有用的是打开有问题的项目的属性。

这重新加载了项目文件/依赖项并修复了“检测到周期”问题。


kia*_*ore 6

我们在 Visual Studio 2022 上也遇到了这个问题,项目的名称“包含”在其他项目命名空间中。

我们的解决方案似乎是取消选中 VS 中的某些“预览功能”。删除Options > Environment > Preview Features这些检查。

Visual Studio 2022 选项


crg*_*den 2

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

CBTSoftware.Services -> CBTSoftware.Data
Run Code Online (Sandbox Code Playgroud)

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

CBTSoftware.Web.Host -> CBTSoftware.Services
Run Code Online (Sandbox Code Playgroud)

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