Visual Studio 2017无法更新Microsoft.NETCore.App包("被项目阻止")

时间:2017-05-17 13:23:33

标签: .net-core visual-studio-2017

我有一个针对Microsoft.NETCore.App 1.1.2的dotnet核心应用程序。我创建了一个测试项目来测试该项目,但在构建时我注意到了这个警告: enter image description here

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

我的问题是Visual Studio不允许我更新该版本,因此我对如何解决此问题感到困惑: enter image description here 理想情况下,我只需单击下拉列表并选择正确的版本,但Visual Studio声称它无法执行此操作,因为项目中的其他约束或packages.config"。我该怎么更新那个包?什么"额外的限制"是Visual Studio引用的吗?

8 个答案:

答案 0 :(得分:49)

编辑2018 :如果您真的知道自己在做什么,请按照说明更新套餐。在大多数情况下,您永远不需要更新此软件包 - 或其他标记为"被项目阻止的软件包" - 手动。依赖于框架的应用程序将使用可用的最新运行时,并且自包含的应用程序将自动使用此软件包的较新版本执行额外构建。 (在某些边缘情况下,您需要在测试项目中升级此包。在这种情况下,为其他选项添加Microsoft.NET.Sdksee this Q&A

隐式包引用1.1.0推断不能通过NuGet更新。

如果从project.json迁移,带有<RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion> 引用的项目可能包含

<PackageReference Update="Microsoft.NETCore.App" Version="1.1.0" />

在csproj文件或类似的项目中(如果您以前使用过包管理器来设置版本):

1.1.2

删除上述条目,所有软件包将自动引用RuntimeFrameworkVersion(或安装的SDK认为最新的软件包)。 Alernatively,在所有项目中设置{{1}}。

答案 1 :(得分:45)

尝试在.NET Core 2 Web应用程序中安装Entityframework.Core包时遇到类似问题。 为了解决这个问题,我通过软件包管理器控制台强制安装:

Install-Package Microsoft.NETCore.App -Version 2.0.5

(2.0.5是当时的最新版本)

我希望它有用。和平。

答案 2 :(得分:18)

我要添加

<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>

成功了

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

答案 3 :(得分:7)

简短回答

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

长期回答

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

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

我为Microsoft.Extensions.Logging.Abstractions包添加了显式引用,以解决依赖项不匹配(构建错误)的问题。 Micorsoft.AspNetCore.App想要此依赖项的版本2.1.0,而另一个软件包则需要版本2.1.1。我的.csproj文件现在看起来像这样。

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

这将构建错误减少为警告,提示Micorsoft.AspNetCore.App需要Microsoft.Extensions.Logging.Abstractions软件包的2.1.0版本,但是2.1.1版本已解决。

OP提到程序包管理器阻止了尝试将Micorsoft.AspNetCore.App更新到2.1.1版以修复警告。

我更新了Micorsoft.AspNetCore.App软件包参考,以明确使用2.1.1版。

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

这修复了构建警告,并在程序包管理器中解除了Microsoft.AspNetCore.App的所有版本的阻止。我什至可以删除对Microsoft.Extensions.Logging.Abstractions的显式引用,而无需重新引入原始错误。最终的.csproj看起来没有问题。

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

答案 4 :(得分:3)

我遇到了同样的问题,我认为问题出在包装上。

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

完全指定版本后,问题已解决。

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

据我所知,该错误是在版本号

时发生的

答案 5 :(得分:2)

另一种可能的解决方案。在csproj文件中,将目标框架更新为您要升级到的版本。进行更改后,按照以下片段,可以通过解决方案NuGet包管理器升级包。

之前:

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

之后:

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

答案 6 :(得分:0)

我简单地解决了它: 右键单击Project(或ALT + Enter) - &gt;属性 - &gt;申请 - &gt;目标框架(选择.NET Core框架(在本例中为1.1))

答案 7 :(得分:0)

最好的建议是,在升级SDK和运行时后再次重新创建项目,然后将旧代码和配置放入新项目中。 除此之外,您将在无用的调整和未知的配置上花费太多时间。