首页 文章

Visual Studio 2017无法更新Microsoft.NETCore.App包(“按项目阻止”)

提问于
浏览
50

我有一个针对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声称它不能这样做因为"additional constraints in the project or packages.config" . 我该怎么更新那个包? Visual Studio指的是什么"additional constraints"?

6 回答

  • 11

    EDIT 2018 :如果您真的知道自己在做什么,请按照更新包装的说明进行操作 . 在大多数情况下,您永远不需要手动更新此包 - 或标记为"blocked by project"的其他包 . 依赖于框架的应用程序将使用可用的最新运行时,并且自包含的应用程序将自动使用此软件包的较新版本执行额外构建 . (在某些边缘情况下,您需要在测试项目中升级此包 . 在这种情况下,为其他选项添加 <TargetLatestRuntimePatch>true</…>see this Q&A

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

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

    <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>
    

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

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

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

  • 5

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

    Install-Package Microsoft.NETCore.App -Version 2.0.5
    

    (2.0.5是当时的最新版本)

    我希望它有用 . 和平 .

  • 41

    对我来说加

    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
    

    做了伎俩

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

    Short Answer

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

    Long Answer

    我有一个全新的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 的警告,需要2.1.0版本的 Microsoft.Extensions.Logging.Abstractions 包,当然,版本2.1.1已经解决 .

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

    我更新了我的 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>
    
  • 41

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

    之前:

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

    后:

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

    我简单地解决了它:右键单击Project(或ALT Enter) - > Properties - > Application - > Target Framework(选择.NET Core framework(在本例中为1.1))

相关问题