Подтвердить что ты не робот

Ошибка обновления с 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.

4b9b3361

Ответ 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

  • Изменение изменений изменения конфигурации

    • Измените пространство имен с 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();

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 и его следует удалить.

Ответ 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