[英]Dotnet Pack vs Nuget.exe Pack, version downgrade error
我們已經從使用 nuget.exe 包更改為 do.net 包(以擺脫對 .nuspec 文件的需要)
我們曾經運行這個命令:
nuget pack "MyComp.Shared\MyComp.Shared.csproj" -OutputDirectory c:\nugetlocal -version 2021.7.7.1149-local -symbols
在開發過程中,我們在本地項目中使用這個打包的 nuget 不會有任何問題。
現在我們跑
dotnet pack "MyComp.Shared\MyComp.Shared.csproj" -output c:\nugetlocal -version 2021.7.7.1149-local --include-symbols
但是,當我們使用這個 package 時,我們現在會遇到版本降級錯誤。 使用第一個命令打包 nuget.exe 時不會發生這種情況。
錯誤
Severity Code Description Project File Line Suppression State Tool
Error NU1605 Detected package downgrade: MyComp.Enums from 2021.7.7.1149-local to 2021.7.5.1317. Reference the package directly from the project to select a different version.
MyComp.Processors -> MyComp.Shared 2021.7.7.1149-local -> MyComp.Enums (>= 2021.7.7.1149-local)
MyComp.Processors -> MyComp.Enums (>= 2021.7.5.1317) MyComp.Processors C:\Users\uzzer\source\repos\MyCompp\MyComp.Processors\MyComp.Processors.csproj
Nuget package 項目
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<PackageId>MyComp.Shared</PackageId>
<Description>MyComp.Shared</Description>
<Authors>MyComp</Authors>
<Company>MyComp</Company>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentValidation" Version="10.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="5.0.6" />
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="5.0.6" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MyComp.Extensions\MyComp.Extensions.csproj" />
<ProjectReference Include="..\MyComp.Enums\MyComp.Enums.csproj" />
</ItemGroup>
</Project>
消費項目
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MyComp.Enums" Version="2021.7.5.1317" />
</ItemGroup>
</Project>
編輯:此鏈接確實有助於解決問題
要理解這個問題,
您可以獲取一個.nupkg 文件,將擴展名更改為.zip,然后打開該文件。 里面是一個.nuspec 文件。
當我們打包 nuget.exe 時, <dependancies />
標簽中沒有包含任何內容。
我們意識到do.net pack
將項目引用添加到 internal.nuspec 文件中,並使用與您正在打包的項目相同的版本號標記它們
所以我們需要確保當我們構建一個時,我們構建依賴項並使用它們。
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>MyComp.Shared</id>
<version>2021.7.7.1150-local</version>
<authors>MyComp</authors>
<description>MyComp.Shared</description>
<dependencies>
<group targetFramework="net5.0">
<dependency id="MyComp.Enums" version="2021.7.7.1150-local" exclude="Build,Analyzers" />
<dependency id="FluentValidation" version="10.1.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Identity" version="2.2.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Identity.EntityFrameworkCore" version="5.0.6" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Mvc.Abstractions" version="2.2.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.AspNetCore.Mvc.ViewFeatures" version="2.2.0" exclude="Build,Analyzers" />
<dependency id="Microsoft.Extensions.Identity.Core" version="5.0.6" exclude="Build,Analyzers" />
<dependency id="Microsoft.Extensions.Identity.Stores" version="5.0.6" exclude="Build,Analyzers" />
<dependency id="Newtonsoft.Json" version="13.0.1" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
</package>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.