【问题标题】:Microsoft.AspNetCore.App 2.1.1 upgrade "Blocked by project"Microsoft.AspNetCore.App 2.1.1 升级“被项目阻止”
【发布时间】:2018-06-21 13:48:48
【问题描述】:

我正在尝试将 .net core 2.1 项目升级到最新版本的 Nuget 包,例如 Microsoft.Extensions.DependencyInjection.Abstractions 2.1.1。

但是,这被包引用 Microsoft.NETCore.App 阻止,当我尝试升级“元”包 Microsoft.NETCore.App 时,我看到类似于 this question 的“被项目阻止”。这已通过切换到较新版本的 SDK 来解决,但是这里不是一个选项...因为没有较新版本的 SDK(还没有?)。

我还看到 this answer 使用更新包参考手动编辑 .csproj 文件来升级特定包,但我怀疑这是这样做的预期方法。

应该我该怎么做呢?现在我只是手动包含了我实际使用的包引用并删除了元包,但我无法想象这是解决这个问题的预期方式。

【问题讨论】:

  • 相关:twitter.com/DamianEdwards/status/1009137684898435073 整个被项目屏蔽是设计使然。 Asp.NET 包需要匹配的 SDK 才能正确运行。更新它们 oob 不是一种选择。
  • 在此之前您可能需要阅读这里的信息 > github.com/aspnet/AspNetCore/issues/9097#issuecomment-517922943
  • ... 以及来自docs.microsoft.com/en-us/nuget/consume-packages/… 的第 4 节(对于某些软件包,更新按钮被禁用,并出现一条消息,指出它是“由 SDK 隐式引用”(或“自动引用”)。这个消息表明该包是较大框架或 SDK 的一部分,不应单独更新...这适用于以下常用包:Microsoft.AspNetCore.All Microsoft.AspNetCore.App Microsoft.NETCore.App NETStandard.Library)
  • 您的 cmets 可能会有所帮助,但您可能想阅读发布日期。尤其是年份位;)

标签: sdk .net-core nuget updates nuget-package


【解决方案1】:

简单。之前正在寻找解决方案,我所要做的就是将其添加到受影响的项目中。

  <PropertyGroup>
    <RuntimeFrameworkVersion>2.1.1</RuntimeFrameworkVersion>
  </PropertyGroup>

另外适用于 .NET Core 3 及更高版本,

   <PropertyGroup>
     <TargetFramework>netcoreapp3.1</TargetFramework>
   </PropertyGroup>

Patrick below 也发布了一个答案,指出某些项目需要 .NET Core App NuGet 包。在 .NET Core 3 之后您将不再需要它。

【讨论】:

  • 这对我有用,但是注意到一旦你创建新项目,它不包含提到的配置代码。因此仍然引用 2.1.0 库而不是 2.1.1。这是 Visual Studio 中的错误,因为它应该针对安装的最新 SDK?
  • @Megrez7 我实际上面临着这个问题。如果我有一些确认会向你报告
  • 我安装了 2.1.302 SDK,虽然这会将包“强制”为指定版本,但这对我来说似乎是一个错误,因为项目应该以安装的 SDK 版本为目标(比如实际值在 NuGet 中说!?!)但这显然没有发生
  • 别忘了 .net 2.1 bootstrap 的版本是 3.7 而 .net 2.2 bootstrap 的版本是 4.3
  • 这为我修复了从 2.2.0 到 2.2.3 的合并。
【解决方案2】:

在我的情况下,这是由于Microsoft.AspNetCore.App 上缺少Version 属性引起的。

由于某种原因,在创建 WebApi 项目时,包的引用如下:

<PackageReference Include="Microsoft.AspNetCore.App" />

添加缺少的属性解决了构建服务器上更新和构建的所有问题。

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />

【讨论】:

  • 我不确定这是否是 正确的 解决方案。显然,您可以避免设置版本,只需安装最新的 SDK:stackoverflow.com/a/50977058/161640
  • @Isaac 我尝试了不同的解决方案,包括手动安装 SDK 和运行时,但除了设置 AspNetCore.App 的显式版本之外,没有任何效果。请注意,它是 AspNetCore 而不是 NetCore。它也可能归结为工具 - 从那时起 VS 2017 进行了几次更新。
【解决方案3】:

我只安装了Microsoft.NETCore.App 2.1.1,无法在Manage NuGet Packages... 窗口中更新到Microsoft.NETCore.App 2.1.2,因为它显示“被项目阻止”:

在上图中,它显示我已经使用最新版本,因为我执行了以下操作...

1 - 在此处下载 .NET Core SDK 的最新版本(截至目前为 v2.1.302):

https://www.microsoft.com/net/download

2 - 安装它并在 Visual Studio Package Manager Console 或 Windows PowerShell 中运行以下命令。它应该显示以下内容:

PM> dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.1.302
 Commit:    9048955601

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17134
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.302\

Host (useful for support):
  Version: 2.1.2
  Commit:  811c3ce6c0

.NET Core SDKs installed:
  1.0.0-rc4-004771 [C:\Program Files\dotnet\sdk]
  1.0.0 [C:\Program Files\dotnet\sdk]
  1.0.3 [C:\Program Files\dotnet\sdk]
  1.0.4 [C:\Program Files\dotnet\sdk]
  1.1.0 [C:\Program Files\dotnet\sdk]
  2.0.2 [C:\Program Files\dotnet\sdk]
  2.1.2 [C:\Program Files\dotnet\sdk]
  2.1.4 [C:\Program Files\dotnet\sdk]
  2.1.100 [C:\Program Files\dotnet\sdk]
  2.1.101 [C:\Program Files\dotnet\sdk]
  2.1.104 [C:\Program Files\dotnet\sdk]
  2.1.105 [C:\Program Files\dotnet\sdk]
  2.1.200 [C:\Program Files\dotnet\sdk]
  2.1.201 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.300-preview2-008533 [C:\Program Files\dotnet\sdk]
  2.1.300-rc1-008673 [C:\Program Files\dotnet\sdk]
  2.1.300 [C:\Program Files\dotnet\sdk]
  2.1.301 [C:\Program Files\dotnet\sdk]
  2.1.302 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.0-preview2-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.0-rc1-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.0-preview2-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.0-rc1-final [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.3 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0-preview2-26406-04 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0-rc1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download
PM> 

【讨论】:

  • 这是第一部分,第二部分是在csproj文件中添加Version。
  • 别忘了 .net 2.1 bootstrap 的版本是 3.7 而 .net 2.2 bootstrap 的版本是 4.3
【解决方案4】:

编辑我的 .csproj 文件并添加以下行对我有用:

<PackageReference Include="Microsoft.NetCore.App" Version="2.1.1" />

【讨论】:

  • 我几个小时以来一直在与没有可用于新项目的 2.1 的问题作斗争。决定尝试使用这种方法。没有运气。这是错误:您的项目中包含“Microsoft.NETCore.App”的 PackageReference。此包由 .NET SDK 隐式引用,您通常不需要从项目中引用它。有关详细信息,请参阅aka.ms/sdkimplicitrefs TipShare C:\Program Files\dotnet\sdk\2.1.201\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.DefaultItems.targets 198 我试过这个。
  • 确保除了 SDK 之外还安装了 2.1.1 运行时。运行dotnet --info,你应该会看到Microsoft.NETCore.App 2.1.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  • 如果您安装了 2.1.1 运行时,这可以工作,而且据我所知,这是让它工作的唯一方法(今天)。人们应该在投票前核实信息。
  • 我同意,除了上面尼古拉斯的回答之外,这是(或应该真的)需要的......
  • 别忘了 .net 2.1 bootstrap 的版本是 3.7 而 .net 2.2 bootstrap 的版本是 4.3
【解决方案5】:

就我而言,@Patrick 的回答是正确的。至少对于安装了 SDK 文件“dotnet-sdk-2.1.403-win-x64.exe”的 VS 2017 (15.8.9)。

症状: 创建一个新的 Web 项目会将 Aspnetcore.App 版本设置为 2.1,即使安装了最新的 SDK。尝试通过 NuGet 管理器更改版本会响应“项目被阻止”。

解决方案: 像这样将 Version="2.1" 添加到 CSPROJ 中的引用中:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1" />

保存/重新打开后,NuGet 管理器将允许选择其他版本的 SDK。请注意,直接添加 Version="2.1.5" 然后保存 CSProj 文件应该会自动触发升级/恢复。

感谢@Patrick

【讨论】:

    【解决方案6】:

    对我来说,我在 csproj 文件中有两次以下行

    <PackageReference Include="Microsoft.AspNetCore.StaticFiles " Version="2.2.0" />
    

    只需删除重复项即可解决问题

    【讨论】:

      【解决方案7】:

      您可以使用包管理器控制台的命令进行安装。 例如:

      安装包 Microsoft.AspNetCore.App -Version 2.2.8

      【讨论】:

        【解决方案8】:
        1. 右键单击您的项目
        2. 点击“属性”
        3. 相应地更改“目标框架”
        4. 保存并关闭属性窗口。 这将自动解决问题,否则您可以自行前往 Nuget 并升级程序集。

        【讨论】:

        • 目标框架是netcoreapp2.0、netcoreapp2.1、netcoreapp2.2,但这里我们讨论的是修复版本,所以你的提议不适用于解决方案。
        【解决方案9】:

        正如@Simon_Weaver 所说,当未指定版本且系统中不存在 2.1.301 SDK 时会发生这种情况

        【讨论】:

        • 至少对我来说这不是真的,我安装了 2.1.302 SDK 并且在创建新项目时它们工作正常并且在 nuget 中 Microsoft.NetCore.App 说 2.1.2 - 但是在现有在安装 2.1.302 之前创建的项目我遇到了这个问题。
        • 每个包版本对应其SDK版本。 2.1.0 -> 2.1.300 2.1.1 -> 2.1.301 2.1.2 -> 2.1.302
        猜你喜欢
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        相关资源
        最近更新 更多