Как перенести веб-API .NET Core 2.2 на .NET Core 3.0?

Я подписался на руководство по миграции Microsoft, но не удалось. Поэтому вместо этого я создал новый проект с .NET 2.2 для создания чистого шаблона, а затем попытался перейти на .NET Core 3.0. Но это снова не удалось. В Startup.cs внедрение зависимостей не может найти метод services.AddMvc().

Кажется, мой код по-прежнему относится к .NET 2.2 вместо .NET 3.0.

Если я запускаю dotnet watch run, я получаю следующую ошибку:

Полный код, который я использую, можно найти на GitHub. Моя информация .NET:

dotnet --info .NET Core SDK (отражающий любой global.json): Версия:
3.0.100 Фиксация: 04339c3a26

Среда выполнения: Имя ОС: Версия ОС Windows: 10.0.18362 Платформа ОС: RID Windows: win10-x64 Базовый путь: C: \ Program Files \ dotnet \ sdk \ 3.0.100 \

Хост (полезно для поддержки): Версия: 3.0.0 Фиксация: 7d57652f33

Установленные пакеты SDK .NET Core: 2.2.401 [C: \ Program Files \ dotnet \ sdk] 3.0.100 [C: \ Program Files \ dotnet \ sdk]

Установленные среды выполнения .NET Core: Microsoft.AspNetCore.All 2.2.6 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.6 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [C: \ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.2.6 [C: \ Program Файлы \ dotnet \ shared \ Microsoft.NETCore.App] Microsoft.NETCore.App 3.0.0 [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0 [C : \ Program Files \ dotnet \ shared \ Microsoft.WindowsDesktop.App]

Чтобы установить дополнительные среды выполнения .NET Core или SDK:
https://aka.ms/dotnet-download

Для v2.2


person nightingale2k1    schedule 26.09.2019    source источник
comment
Когда вы меняете версию Net, вам всегда нужно делать чистую сборку, чтобы код для компиляции был правильным.   -  person juunas    schedule 26.09.2019
comment
@jdweng Я очистил dotnet до и после этого восстановил dotnet. я должен удалить 2.2, чтобы получить эту работу?   -  person jdweng    schedule 26.09.2019
comment
У вас может быть несколько установленных версий Net. У вас может быть VS2018 с Net Core 2.0 и VS2019 с Net Core 3.0. Проблема в том, что зависимости компилятора не работают при изменении Net. Вы не можете иметь файлы obj в проекте, смешанные с разными версиями Net. При обновлении до Net Core 3.0 все файлы obj должны быть скомпилированы с Net Core 3.0.   -  person nightingale2k1    schedule 26.09.2019
comment
Я пробовал это, но похоже, что проект связан с netcore2.2 в моем vscode, я не могу получить services.AddControllers () IWebHostEnvironment также нераспознан.   -  person jdweng    schedule 26.09.2019


Ответы (1)


А для v3

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version
public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
2); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseMvc(); }

Также убедитесь, что ваш csproj является целевым .net core 3.0

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

Ошибка выглядит так, как будто она связана с конфигурацией промежуточного программного обеспечения. Проверьте этот раздел: docs.microsoft.com/en-us/aspnet/core/migration/

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
  </PropertyGroup>
person Tony Ngo    schedule 26.09.2019
comment
Вы все еще можете использовать _1_ и _2_. Новые методы, такие как _3_, _4_ и т. Д. просто если вы хотите быть более детализированным - person nightingale2k1; 26.09.2019
comment
Исключение запуска приложения System.InvalidOperationException: маршрутизация конечной точки не поддерживает 'IApplicationBuilder.UseMvc (...)'. Чтобы использовать IApplicationBuilder.UseMvc, установите MvcOptions.EnableEndpointRouting = false внутри ConfigureServices (...). в Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc (приложение IApplicationBuilder, Action'1 configureRoutes) в Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc (IApplicationBuilderExtensions.UseMvc (IApplicationBuilderExtensions. testapp \ netmig \ Startup.cs: строка 46 в System.RuntimeMethodHandle.InvokeMethod (цель объекта, аргументы Object [], сигнатура сигнатуры, логический конструктор, логические исключения wrapExceptions) в System.Reflection.RuntimeMethodInfo.Invoke (Object, BindingFlags, invoke binder, параметры Object [], культура CultureInfo)
в Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke (экземпляр объекта, построитель IApplicationBuilder) в Microsoft.AspNetCore.Hosting.ConfigureBuilder. ‹> c__DisplayClass4_0.b__0 (IApplicationBuilder) (IApplicationBuilder) .AspNetCore.Hosting.GenericWebHostBuilder. ‹> C__DisplayClass13_0.b__2 (приложение IApplicationBuilder) в Microsoft.A spNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter <> c__DisplayClass0_0.g__MiddlewareFilterBuilder |.. 0 (IApplicationBuilder строитель) в Microsoft.AspNetCore.HostFilteringStartupFilter <> c__DisplayClass0_0.b__0 (IApplicationBuilder приложение) на Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync (CancellationToken CancellationToken) необработанное исключение. System.InvalidOperationException: маршрутизация конечной точки не поддерживает 'IApplicationBuilder.UseMvc (...)'. Чтобы использовать IApplicationBuilder.UseMvc, установите MvcOptions.EnableEndpointRouting = false внутри ConfigureServices (...). в Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc (приложение IApplicationBuilder, Action'1 configureRoutes) в Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc (IApplicationBuilderExtensions.UseMvc (IApplicationBuilderExtensions. testapp \ netmig \ Startup.cs: строка 46 в System.RuntimeMethodHandle.InvokeMethod (цель объекта, аргументы Object [], сигнатура подписи, логический конструктор, логические исключения wrapExceptions) в System.Reflection.RuntimeMethodInfo.Invoke (Object, BindingFlags, invoke binder, параметры Object [], культура CultureInfo)
в Microsoft. AspNetCore.Hosting.ConfigureBuilder.Invoke (экземпляр объекта, построитель IApplicationBuilder) в Microsoft.AspNetCore.Hosting.ConfigureBuilder. ‹> C__DisplayClass4_0.b__0 (построитель IApplicationBuilder) (построитель IApplicationBuilder) (IApplicationBuilder builder) (IApplicationBuilder builder) (IApplicationBuilder builder) (IApplicationBuilder Builder). при Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter <> c__DisplayClass0_0.g__MiddlewareFilterBuilder |. 0 (IApplicationBuilder строитель) в Microsoft.AspNetCore.HostFilteringStartupFilter <> c__DisplayClass0_0.b__0 (IApplicationBuilder приложение) на Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync (CancellationToken. cancellationToken) в Microsoft.Extensions.Hosting.Internal.Host.StartAsync (CancellationToken cancellationToken) в Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync (узел IHost, токен CancellationToken) в Microsoft.Exstractions.HostunExtensions. host, токен CancellationToken) в Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run (хост IHost) в netmig.Program.Main (String [] args) в E: \ testapp \ netmig \ Program.cs: строка 18 смотреть: завершился с ошибкой код -532462766 - person Chris Pratt; 26.09.2019