将Asp.Net Core RC1迁移到RC2后出现的问题

时间:2016-06-24 19:21:59

标签: asp.net-core

我们已将项目从Asp.Net核心RC1迁移到RC2。迁移后,我们在以下位置遇到2个编译错误。

First Issue位于startup.cs中,“以下方法或属性之间的调用不明确:”

public void ConfigureServices(IServiceCollection services)
{

...

services.AddIdentity<ApplicationUser, IdentityRole>()
       .AddEntityFrameworkStores<ApplicationDbContext>()
       .AddDefaultTokenProviders();


       ...
}

错误详情:

Error   CS0121  The call is ambiguous between the following methods or properties: 'Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity<TUser, TRole>(Microsoft.Extensions.DependencyInjection.IServiceCollection)' and 'Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity<TUser, TRole>(Microsoft.Extensions.DependencyInjection.IServiceCollection)'  Firebolt.SecurityService..NETCoreApp,Version=v1.0   C:\Krishnan\RSI\SourceCode\Bluesky Developement\BlueSky Development\Firebolt.Security\src\Firebolt.Security\Startup.cs  58  Active

第二期:

[Microsoft.Data.Entity.Infrastructure.DbContext(typeof(ApplicationDbContext))]
    [Migration("00000000000000_CreateIdentitySchema")]
    partial class CreateIdentitySchema
    {
        protected override void BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder modelBuilder)
        {
     ...
}

错误详情:

 Error  CS0115  'CreateIdentitySchema.BuildTargetModel(ModelBuilder)': no suitable method found to override Firebolt.SecurityService..NETCoreApp,Version=v1.0   C:\Krishnan\RSI\SourceCode\Bluesky Developement\BlueSky Development\Firebolt.Security\src\Firebolt.Security\Migrations\00000000000000_CreateIdentitySchema.Designer.cs  15  Active

这两个问题的解决方法是什么?任何想法

4 个答案:

答案 0 :(得分:2)

我找到了两个问题的解决方案。我在这里发布它可能对其他人有用

第一期

Error   CS0121  The call is ambiguous between the following methods or properties: 'Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity<TUser, TRole>(Microsoft.Extensions.DependencyInjection.IServiceCollection)' and 'Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity<TUser, TRole>(Microsoft.Extensions.DependencyInjection.IServiceCollection)'  Firebolt.SecurityService..NETCoreApp,Version=v1.0

问题在于Project.json中的以下2个配置条目。我用以下2替换了现有的条目,它解决了问题

 "Microsoft.AspNetCore.Identity": "1.0.0-rc2-final",
 "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-rc2-final",

第二期

Error   CS0115  'CreateIdentitySchema.BuildTargetModel(ModelBuilder)': no suitable method found to override Firebolt.SecurityService..NETCoreApp,Version=v1.0   

在所有与迁移相关的类

中查找/替换现有的使用名称空间
using Microsoft.Data.Entity with using Microsoft.EntityFrameworkCore

答案 1 :(得分:2)

我在使用dot net core 2.0的迁移中也遇到了这个错误。希望这可以帮助某人。

  

错误CS0115'init.BuildTargetModel(ModelBuilder)':找不到合适的方法来覆盖

在重构之后,我的迁移类被移动了一个新的命名空间。我已经将它们从MyApp.Migrations移到了MyApp.Web.Migrations,而dot net则不喜欢它。

我将他们移回MyApp.Migrations并且他们停止抱怨。

答案 2 :(得分:0)

我有与@span相同的解决方案 迁移已从 .Web。项目移至 .Database。项目。但是我的迁移仍然在Web中。它导致错误。按照@span解决方案,我只是更改了迁移的名称空间,它可以正常工作!

答案 3 :(得分:0)

我遇到了错误

CS0115'CreateIdentitySchema.BuildTargetModel(ModelBuilder)': 找不到适合的方法来覆盖 Firebolt.SecurityService..NETCoreApp,Version = v1.0

该错误指向设计者enter image description here 成立之初,我不小心更改了迁移文件的名称(上图中的第一个文件) enter image description here

最后,我退回了A,一切继续正常工作。