— Система.Исключение TypeLoadException’ произошло в> Microsoft.AspNet.Mvc.Core.dll

#c# #asp.net #.net #asp.net-core #asp.net-core-mvc

#c# #asp.net #.net #asp.net-ядро #asp.net-ядро-mvc

Вопрос:

Я пытаюсь создать образец asp.net основное приложение. Но при отладке он выдает ошибку:

Исключение типа ‘System.В Microsoft произошло исключение TypeLoadException.AspNet.Mvc.Core.dll но не был обработан в пользовательском коде

Дополнительная информация: Не удалось загрузить тип ‘Microsoft.Расширения.Ввод зависимостей.Расширения.ServiceCollectionExtensions » из сборки»Microsoft.Расширения.Ввод зависимостей.Абстракции, Версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken=adb9793829ddae60’.

что случилось?

project.json

 {
  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45 win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}
 

Startup.cs

 public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddConsole();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles();

            app.UseMvc();
        }
    }
 

Ответ №1:

Удалите "Microsoft.AspNetCore.Mvc.Core": "1.0.1" и "Microsoft.AspNet.Mvc": "6.0.0-rc1-final" , затем замените его на "Microsoft.AspNetCore.Mvc": "1.0.1"

Окончательная версия

 {
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }
  }
 

Microsoft.AspNet.Mvc уже ссылается Microsoft.AspNet.Mvc.Core , поэтому нет необходимости ссылаться на него напрямую.

Ответ №2:

Вам не хватает «Microsoft.Расширения.Ввод зависимостей.Абстракции»: «1.0.0» в зависимостях.

Ответ №3:

project.json Похоже, ты использовал ASP.NET Core RC2, но с тех пор вы обновились до выпущенной версии.

В документации говорится, что для того, чтобы все работало в RC2, вы должны были

Если вы нацеливались на .NET Core с помощью RC2, вам нужно было добавить импорт в project.json в качестве временного обходного пути для некоторых зависимостей EF Core, не поддерживающих .NET Standard. Теперь их можно удалить.

Источник: ASP.NET Основная документация

Поэтому удалите

 "imports": [
    "dotnet5.6",
    "portable-net45 win8"
]
 

из вашего project.json

Комментарии:

1. Вы имеете в виду RC1. в RC2 все пакеты уже были переименованы в Microsoft.AspNetCore.*