Ошибка обновления с ASP.NET 5 Beta 4 до Beta 5
Я выполнил следующие шаги, чтобы обновить ASP.NET 5 Beta 4 до Beta 5, но при вызове я получаю сообщение об ошибке во время выполнения. application.UseBrowserLink();
:
Исключение типа "System.TypeLoadException" произошло в mscorlib.dll, но не было обработано в коде пользователя
Дополнительная информация: Не удалось загрузить тип "Microsoft.AspNet.Builder.IApplicationBuilder" из сборки "Microsoft.AspNet.Http, версия =1.0.0.0, культура = нейтральная, PublicKeyToken= ноль".
Вот шаги, которые я выполнил:
- Если бы VS 2015 RC уже был установлен.
- Из PowerShell запустите:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- Из PowerShell запустите:
dnvm upgrade
Добавлен файл Global.json (у меня его еще не было). Когда я добавил его, он уже ссылался на бета-версию 5:
{ "projects": [ "Source", "Tests" ], "sdk": { "version": "1.0.0-beta5-12103" } }
Обновлены все пакеты в project.json до Beta 5. Вы можете увидеть полную версию моего файла project.lock.json здесь.
{ "dependencies": { "Boilerplate.Web.Mvc6": "1.0.2", "Microsoft.AspNet.Diagnostics": "1.0.0-beta5", "Microsoft.AspNet.Mvc": "6.0.0-beta5", "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5", "Microsoft.AspNet.Mvc.Xml": "6.0.0-beta5", "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", "Microsoft.AspNet.StaticFiles": "1.0.0-beta5", "Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5", "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5", "Microsoft.Framework.Configuration.EnvironmentVariables": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5", "Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5", "Microsoft.Framework.Logging": "1.0.0-beta5", "Microsoft.Framework.Logging.Console": "1.0.0-beta5", "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5", "Newtonsoft.Json": "6.0.6", "System.Runtime": "4.0.20-beta-23019" } "frameworks": { "dnx451": { "frameworkAssemblies": { "System.Net.Http": "4.0.0.0", "System.ServiceModel": "4.0.0.0" } }, "dnxcore50": { "dependencies": { "System.Net.Http": "4.0.0-beta-23019" } } } }
- Затем в инструкциях говорится, что вы должны выполнить следующие команды, но я считаю, что VS 2015 RC сделает это за вас.
dnu restore
затемdnu build
,
ОБНОВИТЬ
Кажется, проблема со ссылкой в браузере, комментирование строки позволяет сайту работать. Это может быть сломано? Нужно охотиться вокруг проблем aspnet GitHub.
6 ответов
Чтобы помочь вам перейти с бета4 на бета5, я предпринял следующие шаги, основанные на результатах исследований.
Среда
- Запуск PowerShell:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- Запуск PowerShell:
dnvm install 1.0.0-beta5
- Запуск PowerShell:
dnvm use 1.0.0-beta5 -p
(не уверен, если это необходимо, однако я должен был)
проект
Откройте global.json и обновите SDK до версии 1.0.0-бета5 так:
{ "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-beta5" } }
Откройте файл project.json:
- Обновлены версии зависимостей с бета4 до бета5
Изменить зависимость конфигурации от:
"Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4"
в
"Microsoft.Framework.Configuration": "1.0.0-beta5", "Microsoft.Framework.Configuration.Json": "1.0.0-beta5"
- Удалить
Microsoft.VisualStudio.Web.BrowserLink.Loader
- переименовывать
_GlobalImport.cshtml
в_ViewImports.cshtml
Изменения в Startup.cs
Изменить конфигурацию
Изменить пространство имен с
using Microsoft.Framework.ConfigurationModel;
вusing Microsoft.Framework.Configuration;
+ Изменить
Configuration.GetSubKey
вConfiguration.GetConfigurationSection
Изменить CTOR на:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv) { // Setup configuration sources. var configBuilder = new ConfigurationBuilder(appEnv.ApplicationBasePath) .AddJsonFile("config.json") .AddEnvironmentVariables(); Configuration = configBuilder.Build(); }
- Удалить
app.UseBrowserLink();
CMD проекта DNU
- Откройте PowerShell в корне приложения
- Бежать
dnu restore
- Бежать
dnu build
- Закрытие и повторное открытие VS в этот момент помогает иногда.
Мне было довольно сложно обновить существующий проект, я не мог найти все необходимые шаги вместе. Надеюсь, поможет!
В завершение, если вы хотите обновить бета-версию 4 до бета-6, см. Ответ Стивена Лотье и на это после:
Чтобы обновить бета-версию 5 до бета-версии 6:
Я сделал:
- Откройте global.json, обновите SDK до версии 1.0.0-beta6 и сохраните этот файл.
- Visual Studio 2015 предлагает загрузить бета6, нажмите Да
В проекте.json:
- изменить dnx451 (или dnx452) на dnx46 (для использования Framework 4.6)
- заменить все "-beta5" на "-beta6" в этом файле
- удалить Microsoft.Framework.ConfigurationModel.UserSecrets
В Startup.cs, если вы используете Session:
- заменить app.UseInMemorySession(...) на app.UseSession()
В ConfigureServices добавьте это:
services.AddCaching(); services.AddSession(); services.ConfigureSession(o => { o.IdleTimeout = TimeSpan.FromSeconds(10); });
Щелкните правой кнопкой мыши ваш проект> Свойства> Отладка> Добавить новую переменную среды:
Имя: DNX_IIS_RUNTIME_FRAMEWORK
Значение: dnx46
См. Это для получения дополнительной информации: http://jameschambers.com/2015/07/launching-an-asp-net-5-application-from-visual-studio-2015/
- В консоли диспетчера пакетов запишите "восстановление dnu" и "dnu build"
- Перезапустите Visual Studio
Мой проект работает в бета6 после этого, может быть, есть другие дела.
После разговора с @davidfowl из команды ASP.NET vNext он сказал мне, что ссылка на браузер не работает в бета-версии 5 и должна быть удалена.
Если кому-то интересно узнать, как обновить бета-версию ASP.NET 5, я нашел полезным загрузить последние обновления ASP.NET и веб-инструментов для Visual Studio 2015, а затем создать новый проект ASP.NET 5 в Visual Studio.
Это создаст проект Beta 7 со структурой проекта, кодом и ссылочными зависимостями для вас. Затем вы можете использовать это как руководство для обновления любых существующих старых бета-проектов.
Например, вот как выглядит мой project.json, используя все зависимости Beta 7:
{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-WebApplication1-a433a0ef-3bed-4bc9-8086-8d18070fa2c1",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.Commands": "7.0.0-beta7",
"EntityFramework.SqlServer": "7.0.0-beta7",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta7",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta7",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta7",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta7",
"Microsoft.AspNet.Mvc": "6.0.0-beta7",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta7",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta7",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta7",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta7",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta7",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta7",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta7",
"Microsoft.Framework.Logging": "1.0.0-beta7",
"Microsoft.Framework.Logging.Console": "1.0.0-beta7",
"Microsoft.Framework.Logging.Debug" : "1.0.0-beta7",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta7"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
На момент написания этой статьи вы можете загрузить обновления бета-версии 7 для Visual Studio. Убедитесь, что вы получили файл WebToolsExtensionsVS14.msi.
Для получения дополнительной информации об этой версии Beta 7 см. Сообщение в блоге, объявляющее о доступности ASP.NET 5 Beta 7.
Это вещь:
Вы обновили DNX с бета4 до бета5 и хотите запустить шаблон MVC6 внутри Visual Studio RC (чьи шаблоны были построены на бета4).
На первом месте, "Microsoft.Framework.Configuration.Json"
больше не существует в бета5. (вы обязательно должны увидеть это: https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5 - переход от бета4 к бета5).
Чтобы убедиться, что ваш DNX был обновлен правильно, создайте новый пустой веб-проект и просто добавьте MVC/WebAPI (простые случаи, чтобы проверить, что он работает).
Я еще не пытался запустить шаблон MVC, но постараюсь вернуться к вам.