将.NET Core应用程序升级到1.1的错误

gal*_*tor 3 .net-core asp.net-core

所以,我有一个快乐的ASP.NET Core 1.0应用程序,目标是net461框架.

今天我尝试将其升级到新的ASP.NET Core 1.1(根据此页面上的说明,您需要做的就是Nuget包升级)

这导致了以下一系列错误:

error: Unable to resolve 'Microsoft.AspNetCore.Diagnostics.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Hosting.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Http.Extensions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.WebUtilities (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.FileProviders.Physical (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.Logging.Abstractions (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.Extensions.Options (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'System.Diagnostics.DiagnosticSource (>= 4.3.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'System.Reflection.Metadata (>= 1.4.1)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Mvc.ApiExplorer (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
error: Unable to resolve 'Microsoft.AspNetCore.Mvc.Cors (>= 1.1.0)' for '.NETFramework,Version=v4.6.1'.
...
Run Code Online (Sandbox Code Playgroud)

我在这里想念的是什么?这不应该工作吗?

作为参考,这里是project.json的相关部分(在运行Nuget升级之前):

  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNet.WebApi.Client": "5.2.3"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net461": {
       "imports": [
      ]
    }
  }
Run Code Online (Sandbox Code Playgroud)

编辑:运行Nuget升级后,依赖项部分由Visual Studio更改为:

  "dependencies": {
    "Microsoft.AspNet.WebApi.Client": "5.2.3",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0"
  },
Run Code Online (Sandbox Code Playgroud)

gal*_*tor 9

我终于明白了,以防其他人有同样的问题.

有三个步骤可以使它工作:

  1. 出于某种原因,标准的"Microsoft和.NET" Nuget提要不包括这些包.我必须打开Nuget设置并勾选"nuget.org"提要.完成后,它能够恢复v1.1包

  2. 我引用的博客文章没有提到您需要打开global.json文件并将SDK版本更改为"1.0.0-preview2-1-003177"(出于某种原因,v1.1仍然有一个名为v1.0.0的SDK - 任何想法在那里发生了什么?! ?)

  3. 完成这两件事之后,尝试运行应用程序会产生500错误,但stdoutLogEnabled在web.config中启用后,您可以看到异常是:

System.IO.FileLoadException:无法加载文件或程序集'System.Collections.Immutable,Version = 1.2.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.

要解决此问题,您需要删除应用程序的bin文件夹,然后重建(由于某种原因"重建解决方案"是不够的).当您部署到Production时,可能您还需要删除那里的bin文件夹,否则您可能会遇到同样的问题.