【问题标题】:Unable to find package Microsoft.NETCore.App.Host.win-x64 with version (= 2.2.7) after upgrading to NetCore 3.1升级到 NetCore 3.1 后找不到版本 (= 2.2.7) 的软件包 Microsoft.NETCore.App.Host.win-x64
【发布时间】:2020-04-30 05:06:24
【问题描述】:

我在本地提要上将 nuget 包从 2.2.x 更新到 3.1.0。 然后,out build machine尝试构建项目,但是:

Project.csproj(0,0): Error NU1102: Unable to find package Microsoft.NETCore.App.Host.win-x64 with version (= 2.2.7)
- Found 1 version(s) in localfeed [ Nearest version: 3.1.0 ]

nuget.org link 说我不应该直接使用它。所以我没有直接使用它。

csproj 示例:

  <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup Label="Globals">
 <SccProjectName>SAK</SccProjectName>
 <SccProvider>SAK</SccProvider>
 <SccAuxPath>SAK</SccAuxPath>
 <SccLocalPath>SAK</SccLocalPath>
 </PropertyGroup>

  <PropertyGroup>
<ProjectGuid>{9B42C5B4-188E-482F-BC44-C3B243F92848}</ProjectGuid>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
<PackageId>Project</PackageId>   
<AssemblyName>Projectr</AssemblyName>
<Version>1.1.0</Version>

为什么.net core不能使用Microsoft.NETCore.App.Host.win-x64 3.1.0版本?

【问题讨论】:

  • 这是您的整个.csproj 文件吗?您的错误消息在版本上非常具体,表明某些东西需要 v2.2.7,也许是您解决方案中的另一个项目?由于 2.2.7 是为 dontnet 2.x 设计的,兼容性问题也是一个主要问题。此外,这些是不建议直接使用的内部包,它可能有助于完全删除包引用。
  • 我同意 @gerryc.inc,其他 nuget 引用也可以拉旧 Microsoft.NETCore.App.Host。
  • 宾果游戏!你也需要更新那个
  • 好的,毕竟你没有明确引用包?
  • @gerryc.inc,没有。我尝试从我所有的 csproj 文件(超过 500 个文件)中找到这个引用,但没有找到。

标签: c# msbuild nuget csproj nuget-package-restore


【解决方案1】:

在我们应用程序的 .csproj 文件中,我们有 RuntimeFrameworkVersion。在那里我们将其更新为所需的版本:

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

【讨论】:

  • 包 Microsoft.NETCore.App.Host.win-x64 需要在我的 nuget 提要中使用正确版本的 visualstudio 2022 来构建和运行 dotnet 核心项目。它可能已在 Visual Studio 2019 中本地缓存,升级 Visual Studio 2022 并没有提取缓存的包。我针对公共 nuget 提要而不是我们的私有提要进行验证,它解决了这个问题。
【解决方案2】:

问题出在此构建任务的 msbuild 配置上(针对 2.2.7 上的构建任务)。在 3.1.0 上更改解决问题

【讨论】:

  • 我们如何改变这个?
  • 您可以在 msbuild 构建代理设置中更改它
  • @AdmiralLand 您能否在解决方案中更好地解释这一点,以便其他人也可以使用它?
  • 我同意@ToreØstergaard。因为我试图在我的 yaml 中设置一个特定的任务来使用 dotnet core 3.1,所以没有用。我尝试了迈克的解决方案,也没有奏效。而且您的解决方案并不像您想象的那样明显。你能澄清一下我们应该怎么做吗?我去了项目设置>代理池>选择池>代理选项卡>选择我的代理,但那里什么都没有
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 2017-04-10
  • 1970-01-01
  • 2022-06-14
  • 2021-03-03
  • 1970-01-01
  • 2018-11-27
相关资源
最近更新 更多