我的项目不会添加对同一解决方案中另一个项目的引用。
我为一个网站创建了一个项目,并将程序的所有部分抽象到.Net类库中(我的模型在不同的类库中,接口在不同的类库中,业务逻辑在不同的类库中)。我正确地引用了所有的项目,并且我还尝试创建了一个我称之为EntityRepository的东西,最初我把DbContext放在里面。但由于我想要使用微软的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?发布于 2019-09-08 08:50:47
考虑创建一个项目来包含您的EntityRepository,比如CBTSoftware.Data,并从您的服务项目中添加对它的引用:
CBTSoftware.Services -> CBTSoftware.Data然后,您可以继续从web项目中引用您的服务项目:
CBTSoftware.Web.Host -> CBTSoftware.Services您仍然可以在Startup.cs文件中配置EntityRepository,因为它可以过渡地了解您的CBTSoftware.Data项目。只需确保从您的服务项目中删除对您的web项目的引用,因为这将创建一个循环。
发布于 2019-09-08 22:33:46
我已经解决了这个问题,方法是删除我在Web Project中创建的DbContext,并使用我在另一个项目中创建的.Net Library,然后在StartUp.cs文件中添加下面这行代码
services.AddDbContext<CBTDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));通过添加它,我能够在Web Project中找到DbContext。然后,当我尝试添加迁移时,出现了另一个问题。我将在另一篇文章中打开它
https://stackoverflow.com/questions/57838194
复制相似问题