.net core Visual Studio 2017无法更新Microsoft.NETCore.App包(“被project阻止”)

.net core Visual Studio 2017无法更新Microsoft.NETCore.App包(“被project阻止”),.net-core,visual-studio-2017,.net Core,Visual Studio 2017,我有一个针对Microsoft.NETCore.app 1.1.2的dotnet core应用程序。我创建了一个测试项目以针对该项目进行测试,但在构建时,我注意到以下警告: 我打开NuGet软件包管理器,看到警告是正确的,正在测试的项目具有不同版本的Microsoft.NETCore.App: 我的问题是Visual Studio不允许我更新该版本,因此我对如何解决此问题感到困惑: 理想情况下,我只需单击下拉列表并选择正确的版本,但VisualStudio声称它无法做到这一点,因为“项目或p

我有一个针对Microsoft.NETCore.app 1.1.2的dotnet core应用程序。我创建了一个测试项目以针对该项目进行测试,但在构建时,我注意到以下警告:

我打开NuGet软件包管理器,看到警告是正确的,正在测试的项目具有不同版本的Microsoft.NETCore.App:

我的问题是Visual Studio不允许我更新该版本,因此我对如何解决此问题感到困惑:
理想情况下,我只需单击下拉列表并选择正确的版本,但VisualStudio声称它无法做到这一点,因为“项目或packages.config中存在其他约束”。我该如何更新那个软件包?Visual Studio所指的“附加约束”是什么?

编辑2018:只有在您确实知道自己在做什么的情况下,才能按照说明更新软件包。在大多数情况下,您永远不需要手动更新此包或其他标记为“被项目阻止”的包。依赖于框架的应用程序将使用可用的最新运行时,自包含应用程序将使用此包的更新版本自动执行额外构建。(在某些边缘情况下,您需要在测试项目中升级此包。在这种情况下,请添加
true
和其他选项)

Microsoft.NET.Sdk
推断的隐式包引用不能通过NuGet更新

如果从project.json迁移,则引用了
1.1.0
的项目可能包含

<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
1.1.0
在csproj文件或类似项目中(如果您以前使用软件包管理器设置版本):


删除上述条目,所有软件包将自动引用
1.1.2
(或安装的SDK认为最新的内容)。
另外,在所有项目中设置
RuntimeFrameworkVersion

我在尝试在.NET Core 2 Web应用程序中安装Entityframework.Core包时遇到类似问题。 为了解决此问题,我已通过Package Manager控制台强制安装:

Install-Package Microsoft.NETCore.App -Version 2.0.5
(2.0.5是当时的最新版本)


我希望它有用。和平。

另一种可能的解决办法。在
csproj
文件中,将目标框架更新为您希望升级到的版本。根据下面的代码片段进行更改后,可以通过solution NuGet package manager升级包

之前:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>

netcoreapp2.0
之后:

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>

netcoreapp2.1
我简单地解决了这个问题:
右键单击Project(或ALT+Enter)->属性->应用程序->目标框架(选择.NET核心框架(在本例中为1.1))

简短回答

将显式版本添加到.csproj文件中的
Microsoft.AspNetCore.App
包引用中

长答案

我有一个全新的netcoreapp2.1项目。以下内容在.csproj文件中。注意:没有与
Microsoft.AspNetCore.App
包参考相关的版本

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  ...
</ItemGroup>
这将生成错误减少为一个警告,提示需要Microsoft.Extensions.Logging.Abstractions包的2.1.0版本的Microsoft.Extensions.Logging.Abstracts,但版本2.1.1当然已解决

试图将Micorsoft.AspNetCore.App更新到2.1.1版以修复警告的操作被Package Manager阻止

我更新了我的
Micorsoft.AspNetCore.App
包参考,以明确使用2.1.1版,如下所示

<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>
<ItemGroup>
  ...
  <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.1.1" />
  ...
</ItemGroup>
我补充说

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
true
成功了

<PropertyGroup>
  <TargetFramework>netcoreapp2.1</TargetFramework>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
</PropertyGroup>

netcoreapp2.1
假的
真的

我也遇到了同样的问题,我认为,问题在于软件包

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

在我精确地指定了版本后,问题得到了解决

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


据我所知,当版本号为时会发生此错误。最好的建议是在升级SDK和运行时后重新创建项目,然后将旧代码和配置放在新项目中。
除此之外,您将在无用的调整和未知配置上花费太多时间。

看起来测试项目正在阻止降级。您是否尝试右键单击解决方案并为解决方案选择manage nuget packages并同时将所有项目移动到不同版本?我没有想到这一点,但我只是尝试了一下,并出现了相同的“被项目阻止”错误。另外,另一个项目被阻止从1.1.2移开。我还安装了VS的最新更新,但没有任何帮助。我收集了在这个问题/答案中找到的所有信息,可能是重复的:因为这个问题似乎真的是一个问题。对于我的场景,这里的答案并不完整。当我在解决方案中的不同项目中错误地将.net核心框架的不同版本作为目标时,我也犯了同样的错误。确保每个目标的项目属性具有相同的版本。您是对的:我打开了.csproj文件并删除了
1.1.0
行。VS仍然不允许我手动更改版本,但至少它现在是正确的版本(它更新为1.1.2,就像你说的那样)。这对我来说很有效,升级到2.1.1->很好的答案,我能找到的所有文章都没有。这最终对我也很有效。在VS2017的pmc中为每个项目调用此命令后,我从v2.1.0升级到v2.1.3安装包Microsoft.NETCore.app为什么它会被“项目阻止”?这是某种bug还是有充分的理由?如果有充分的理由,也许做上述事情不是个好主意?还是解决了问题?谢谢你的提示。所以“被项目阻止”变成了“被VS NuGet GUI阻止”。所以这将针对当前机器上的最新版本的框架。如果本地计算机已打补丁并已安装主机
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" />