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

时间:2016-11-17 10:40:28

标签: asp.net-core .net-core

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

今天我尝试将其升级到新的ASP.NET Core 1.1(根据说明on this page,您需要做的就是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'.
...

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

供参考,以下是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": [
      ]
    }
  }

编辑:运行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"
  },

2 个答案:

答案 0 :(得分:9)

我终于明白了,以防其他人遇到同样的问题。

有三个步骤可以让它发挥作用:

  1. 出于某种原因,标准的&#34; Microsoft和.NET&#34; Nuget Feed不包含这些软件包..我必须打开Nuget设置并勾选<强>&#34; nuget.org&#34; 也是。完成后,它能够恢复v1.1包

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

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

  4.   

    System.IO.FileLoadException:无法加载文件或程序集   &#39; System.Collections.Immutable,Version = 1.2.0.0,Culture = neutral,   公钥= b03f5f7f11d50a3a&#39;或其中一个依赖项。该   定位程序集的清单定义与程序集不匹配   参考

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

答案 1 :(得分:0)

我怀疑类似于@gallivantor在他的#1中提到的东西,但不知何故有些东西不断重写UI背后的NuGet.config文件,当我按照@ jim-w的建议重新启动Visual Studio时,NuGet.org项将返回取消选中。

所以我决定查看NuGet.config文件,发现有两个部分:<packageSources><disabledPackageSources>。带有NuGet.org密钥的源代码都包含在内。我试图从禁用的软件包部分删除它,一切都开始工作。

在:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
  <disabledPackageSources>
    <add key="nuget.org" value="true" /> <!-- This is what I was referring to -->
  </disabledPackageSources>
</configuration>

后:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

警告:我省略了许多细节(特别是关于环境)以保持答案简单。在将此解决方案应用于您的情况之前,请确保它适合您的具体情况。