【问题标题】:Error Upgrading from ASP.NET 5 Beta 4 to Beta 5从 ASP.NET 5 Beta 4 升级到 Beta 5 时出错
【发布时间】:2015-07-04 08:32:24
【问题描述】:

我已按照here 的步骤从 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=null'。

这些是我遵循的步骤:

  1. 已经安装了 VS 2015 RC。
  2. 从 PowerShell 运行: $env:DNX_FEED="https://www.nuget.org/api/v2"
  3. 从 PowerShell 运行:dnvm upgrade
  4. 添加了一个 Global.json 文件(我还没有)。当我添加它时,它已经提到了 Beta 5:

    {
        "projects": [ "Source", "Tests" ],
        "sdk": {
            "version": "1.0.0-beta5-12103"
        }
    }
    
  5. 将 project.json 中的所有包更新到 Beta 5。您可以看到我的 project.lock.json 文件的完整版本here

    {
      "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"
            }
          }
        }
    }
    
  6. 然后说明继续说您应该运行以下命令,但我相信 VS 2015 RC 会为您执行此操作dnu restore 然后dnu build

更新

这似乎是浏览器链接的问题,注释掉该行可以使网站正常工作。可能坏了?需要寻找 aspnet GitHub 问题。

【问题讨论】:

  • 来自稳定 NuGet 源的最新 dnx 运行时是 1.0.0-beta5,但您在 global.json 中引用了夜间构建 1.0.0-beta5-12103。也许更改 sdk 版本 1.0.0-beta5 会有所帮助。

标签: c# asp.net .net asp.net-core asp.net-core-mvc


【解决方案1】:

为了帮助您从 beta4 迁移到 beta5,这些是我根据研究/发现采取的以下步骤。

环境

  • 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:

    • 将依赖项版本从 beta4 更新到 beta5
    • 从以下位置更改配置依赖项:

      "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();

项目 DNU CMD

  • 应用根目录中打开 PowerShell
  • 运行dnu restore
  • 运行dnu build
  • 此时关闭和重新打开 VS 有时会有所帮助。

我自己发现升级现有项目非常困难,无法找到所需的所有步骤。 希望对您有所帮助!

【讨论】:

  • 如果您能更新您对 beta 6 的体验,将不胜感激。
  • 优秀的信息和研究,谢谢。 MS 在 VS2015 上严重丢球……可悲的是,在他们后 Win-7 时代的一切:(
【解决方案2】:

要完成,如果您想从 beta 4 更新到 beta 6,请参阅 Stephen Lautier 的回答以及之后的内容:

从 beta 5 更新到 beta 6:

我做到了:

  • 打开 global.json 并将 sdk 更新为“1.0.0-beta6”并保存此文件
  • Visual Studio 2015建议下载beta6,点击是

在 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); });
    
  • 右键单击您的项目 > 属性 > 调试 > 添加新环境变量:

名称: DNX_IIS_RUNTIME_FRAMEWORK

值: dnx46

查看更多信息:http://jameschambers.com/2015/07/launching-an-asp-net-5-application-from-visual-studio-2015/

  • 在包管理器控制台中,写下这个“dnu restore”和这个“dnu build”
  • 重启 Visual Studio

我的项目在那之后在 beta6 工作,也许还有其他事情要做。

【讨论】:

  • 为什么要删除 Microsoft.Framework.ConfigurationModel.UserSecrets?
【解决方案3】:

在与 ASP.NET vNext 团队的@davidfowl 交谈后,他告诉我 Browser Link 在 beta5 中不起作用,应该被删除。

【讨论】:

  • 我们正在调查
  • 当您转到 VS2015 RTM 中的 File->New Project 时,它们确实有对 Browser Link 的引用
【解决方案4】:

【讨论】:

  • 我都试过了,但还是不行。同样的错误。
【解决方案5】:

事情是这样的:

您将 DNX 从 beta4 更新到 beta5,并且想要在 Visual Studio RC 中运行 MVC6 模板(其模板是围绕 beta4 构建的)。

首先,"Microsoft.Framework.Configuration.Json" 在 beta5 中不再存在。 (你肯定会看到这个:https://github.com/aspnet/announcements/issues?q=milestone%3A1.0.0-beta5 - 从 beta4 到 beta5 的重大变化)。

为了查看您的 DNX 是否已正确更新,请构建一个新的空 Web 项目并简单地添加 MVC/WebAPI(简单的案例来检查它是否有效)。

我还没有尝试运行 MVC 模板,但我会尝试再回复您。

【讨论】:

  • “Microsoft.Framework.ConfigurationModel.Json”已重命名为“Microsoft.Framework.Configuration.Json”。它确实存在。
  • 是的,你是对的。 :) 模板运行成功了吗?
  • 顺便说一句,您应该尝试不经过身份验证的 MVC6 模板,因为 EF 发生了一些变化:github.com/aspnet/Announcements/issues/35
  • 如果您想使用新的 beta5,请安装 Yeoman,它为您提供 web 应用程序的基本模板,包括 mvc 模板(包括 EF)
  • 您能做的最好的事情是安装 Node(如果您还没有)并安装 Yeoman for asp.net 5,然后您可以创建功能性 beta 5 模板(MVC Web App、Web没有身份验证的应用程序等)。到目前为止,我还没有在 GitHub 上找到它们。
【解决方案6】:

如果有人想知道如何更新到 ASP.NET 5 Beta 7,我发现下载 Visual Studio 2015 的最新 ASP.NET 和 Web 工具更新然后在 Visual 中创建一个新的 ASP.NET 5 项目很有用工作室。

这将为您创建一个包含项目结构、代码和引用依赖项的 Beta 7 项目。然后,您可以将其用作升级任何现有旧 Beta 项目的指南。

例如,我的 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" ]
  }
}

在撰写本文时,您可以在此处下载the beta 7 updates for Visual Studio。确保您获得文件 WebToolsExtensionsVS14.msi。

要了解有关此 Beta 7 版本的更多信息,请参阅博文Announcing Availability of ASP.NET 5 Beta7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2016-06-29
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多