【问题标题】:Errors upgrading .NET Core app to 1.1将 .NET Core 应用升级到 1.1 时出错
【发布时间】:2017-01-20 09:52:23
【问题描述】:

所以,我有一个运行良好的 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"
  },

【问题讨论】:

  • 您是否下载了 1.1 SDK/工具?
  • 你能在更新 nuget 包后发布你的 project.json 依赖部分吗?
  • 是的,安装了 1.1 SDK(它在添加/删除程序中显示为“Microsoft .NET Core 1.1.0 - SDK 1.0.0 Preview 2.1-03177 (x64)”)另外,添加了新的帖子的依赖项部分
  • 命令提示符中的dotnet restore 告诉你什么?
  • 另外,将Microsoft.AspNetCore.Server.IISIntegration.Tools 更新为1.1.0-preview4-final

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


【解决方案1】:

我终于想通了,以防其他人有同样的问题。

实现它的三个步骤:

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

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

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

System.IO.FileLoadException:无法加载文件或程序集 'System.Collections.Immutable,版本=1.2.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。

要解决这个问题,您需要删除应用程序的 bin 文件夹,然后重新构建(出于某种原因,“重新构建解决方案”还不够)。当您部署到生产环境时,您可能还需要删除那里的 bin 文件夹,否则您可能会遇到同样的问题。

【讨论】:

  • #1 单独让它为我工作 - 尽管由于某种原因我不得不重新启动 VS。
【解决方案2】:

我怀疑与@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>

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

【讨论】:

    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多