#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.*