Microsoft.AspNetCore.App2.1.1升级"Blocked by project"

Microsoft.AspNetCore.App 2.1.1 upgrade "Blocked by project"

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

然而,当我尝试升级 "meta" 包 Microsoft.NETCore.App 时,我看到 "Blocked by project" 类似于 .通过切换到更新版本的 SDK 解决了这个问题,但是这不是这里的选项...因为没有更新版本的 SDK(还没有?)。

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

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

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

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

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

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

此外,对于 .NET Core 3 及更高版本,

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

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

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

我只安装了 Microsoft.NETCore.App 2.1.1,无法在 Manage NuGet Packages... window 中更新到 Microsoft.NETCore.App 2.1.2,因为它显示 "Blocked by project":

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

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.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> 

在我的例子中,这是由于 Microsoft.AspNetCore.App 上缺少 Version 属性造成的。

出于某种原因,当创建 WebApi 项目时,包被引用如下:

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

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

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

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

症状:即使安装了最新的 SDK,创建新的 Web 项目也会将 Aspnetcore.App 版本设置为 2.1。尝试通过 NuGet 管理器更改版本会响应 'project blocked'。

解决方案: 将 Version="2.1" 添加到 CSPROJ 中的引用,如下所示:

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

save/reopen之后,NuGet 管理器将允许选择其他版本的 SDK。请注意,直接添加 Version="2.1.5" 然后保存 CSProj 文件应该会自动触发 upgrade/restore。

谢谢@Patrick

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

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

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

  1. 右键单击您的项目
  2. 点击"Properties"
  3. 相应地更改"Target Framework"
  4. 保存并关闭属性 window。 这将自动解决问题,否则您可以去 Nuget 自己升级程序集。

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

Install-Package Microsoft.AspNetCore.App -Version 2.2.8