Ошибка обновления с 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, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = NULL".
Это следующие шаги:
- Если VS 2015 RC уже установлен.
- От запуска PowerShell:
$env:DNX_FEED="https://www.nuget.org/api/v2"
- От запуска PowerShell:
dnvm upgrade
-
Добавлен файл Global.json(у меня его еще не было). Когда я добавил его, он уже упоминал Beta 5:
{
"projects": [ "Source", "Tests" ],
"sdk": {
"version": "1.0.0-beta5-12103"
}
}
-
Обновлены все пакеты в файле project.json для бета 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
.
UPDATE
Кажется, что проблема связана с ссылкой на браузер, комментируя вывод строки, сайт работает. Это может быть нарушено? Нужно охотиться вокруг проблем GitHub aspnet.
Ответы
Ответ 1
Чтобы помочь вам перейти от бета-версии к бета-версии 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-beta5 должно выглядеть следующим образом:
{
"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
CMU проекта DNU
- Откройте PowerShell внутри root приложения
- Запустить
dnu restore
- Запустить
dnu build
- Иногда закрытие и повторное открытие VS иногда помогает.
Мне было очень сложно обновить существующий проект, не смогли найти все необходимые шаги.
Надеюсь, это поможет!
Ответ 2
Чтобы завершить, если вы хотите обновить с бета-версии 4 до бета-версии 6, см. ответ Стивена Лотье и на это после:
Обновить с бета-версии 5 до бета-версии 6:
Я сделал:
- Откройте global.json и обновите sdk до "1.0.0-beta6" и сохраните этот файл
- Visual Studio 2015 предлагает загрузить бета6, нажмите "Да"
В project.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); });
-
Щелкните правой кнопкой мыши на своем проекте > Свойствa > Отладкa > Добавить новую переменную среды:
Имя: 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 после этого, возможно, есть и другие вещи.
Ответ 3
После разговора с @davidfowl из команды ASP.NET vNext он сказал мне, что Browser Link не работает в бета-версии 5 и его следует удалить.
Ответ 4
Переименованные имена пакетов Microsoft.AspNet.Http и Microsoft.AspNet.Http.Core
Ответ 5
Вот что:
Вы обновили 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, но я попытаюсь вернуться к вам.
Ответ 6
В случае, если кому-то интересно, как обновиться до бета-версии ASP.NET 5, я счел полезным загрузить последние обновления ASP.NET и веб-инструментов для Visual Studio 2015, а затем создать новый проект ASP.NET 5 в Visual Студия.
Это создаст проект 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 Beta7