Asp.net-Core

無法升級或降級 NuGet 包

  • April 20, 2020

我有一個 ASP.NET Core 網站,它依賴於 2 個類庫。

他們都引用了 Microsoft.NETCore,但版本以某種方式混淆並導致我收到警告:

檢測到的包降級:Microsoft.NETCore.App 從 1.1.0 到 1.0.3

NuGet 不允許我更改以下版本Microsoft.NetCore.App

無法更新包

如果我嘗試升級或降級,我會收到錯誤消息

由於項目或 packages.config 中的其他限制,以下版本不可用

我該如何解決這個錯誤?

我的 csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web">

 <PropertyGroup>
   <TargetFramework>netcoreapp1.0</TargetFramework>
   <PreserveCompilationContext>true</PreserveCompilationContext>
   <AssemblyName>AutomotiveWebPortalCore</AssemblyName>
   <OutputType>Exe</OutputType>
   <PackageId>AutomotiveWebPortalCore</PackageId>
   <UserSecretsId>aspnet-AutomotiveWebPortalCore-20170223120414</UserSecretsId>
   <RuntimeFrameworkVersion>1.0.3</RuntimeFrameworkVersion>
   <PackageTargetFallback>$(PackageTargetFallback);dotnet</PackageTargetFallback>
 </PropertyGroup>

 <ItemGroup>
   <Content Update="wwwroot\**\*;Views\**\*;Areas\**\Views;appsettings.json;web.config">
     <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
   </Content>
 </ItemGroup>

 <ItemGroup>
   <PackageReference Include="AutoMapper" Version="5.2.0" />
   <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="1.2.0" />
   <PackageReference Include="DevExtreme.AspNet.Core" Version="16.2.4" />
   <PackageReference Include="DevExtreme.AspNet.Data" Version="1.2.4" />
   <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.0.1" />
   <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.0.2" />
   <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.0.1" />
   <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.0.2" />
   <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.0.1" />
   <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.0" />
   <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.0.1" />
   <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.0.1" />
   <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.0" />
   <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.0.1" />
   <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.0.1" />
   <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.0.1" />
   <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink.Loader" Version="14.0.1" />
   <PackageReference Include="bootstrap" Version="3.3.7" />
   <PackageReference Include="HubSpot.Tether" Version="1.1.1" />
 </ItemGroup>

 <Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
 </Target>

 <ItemGroup>
   <DotNetCliToolReference Include="BundlerMinifier.Core" Version="2.2.301" />
 </ItemGroup>

 <ItemGroup>
   <ProjectReference Include="..\AutomotiveDAL\AutomotiveDAL.csproj" />
   <ProjectReference Include="..\AutomotiveDTO\AutomotiveDTO.csproj" />
 </ItemGroup>

</Project>

編輯:

以下是我的類庫的參考:

數據訪問層:

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <TargetFramework>netcoreapp1.0</TargetFramework>
 </PropertyGroup>

 <ItemGroup>
   <PackageReference Include="AutoMapper" Version="5.2.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="1.1.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.0" />
   <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0-msbuild3-final" />
 </ItemGroup>

</Project>

數據傳輸對象:

<Project Sdk="Microsoft.NET.Sdk">

 <PropertyGroup>
   <TargetFramework>netcoreapp1.0</TargetFramework>
 </PropertyGroup>

</Project>

即使在全新的空 ASP.NET Core 項目中,似乎也會出現“以下版本由於其他限製而不可用”消息。我認為這是 NuGet GUI 的錯誤或功能。(我使用的是 Visual Studio 2017 的最終版本)

您可以通過直接編輯 .csproj 文件來解決此問題:右鍵點擊解決方案資源管理器中的項目並選擇Edit (projectname).csproj

您可以在第一個 PropertyGroup 中提升 Microsoft.NETCore.App(和目標框架)的版本:

<PropertyGroup>
 <TargetFramework>netcoreapp1.1</TargetFramework>

 <!-- snip -->

 <RuntimeFrameworkVersion>1.1.0</RuntimeFrameworkVersion>

 <!-- snip -->
</PropertyGroup>

然後,關閉文件並重建項目。我使用您在問題中提到的所有(公共)依賴項對此進行了測試,沒有看到任何包版本衝突。

引用自:https://stackoverflow.com/questions/42627678