nuget 中的 DLL 引用 Version=0.0.0.0

DLL in nuget references Version=0.0.0.0

我有以下情况:

有一个我构建为 nuget 包的库 LibF,它包含 net48 和 net core 3.1 的 dll。我是直接从 csproj 打包的人,使用:

<PropertyGroup>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>

它的版本为“4.2.0-alpha.55”(我使用 GitVersion)。然后我有另一个使用 LibF 的库 LibD,因此它将它作为 .csproj 中的 nuget 包引用,如下所示:

<ItemGroup>
  <PackageReference Include="LibF " Version="4.2.0-alpha.55" />
</ItemGroup>

然后我还从 LibD 创建了一个 nuget 包。我是直接从 csproj 打包的人,使用:

<PropertyGroup>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>

当我尝试在其他地方使用 LibD 的 nuget 时,我在 Visual Studio 2019 年遇到编译问题:

Error   CS0012  The type 'MyType' is defined in an assembly that is not referenced. 
You must add a reference to assembly 'LibF , Version=0.0.0.0, Culture=neutral,  
PublicKeyToken=468d6536c503beba'.

显然我没有 0.0.0.0 版本。现在,当我查看 nuget 包(解压缩)时,我在 LibD.nuspec:

中看到以下条目
<dependency id="LibF" version="4.2.0-alpha.55" exclude="Build,Analyzers" />

这是正确的。但是当我使用 JetBrains DotPeek 分析 dll 时,它在 dll 的引用中告诉我:

LibF, Version=0.0.0.0, Culture=neutral, PublicKeyToken=468d6536c503beba

所以我的问题是:为什么有Version=0.0.0.0作为dll的参考?为什么它不需要 4.2.0.0,因为这是我拥有的版本,也是我希望 dll 引用的版本。

什么会导致这样的问题?

csproj 的 PropertyGroup 中缺少以下内容:

<UpdateAssemblyInfo>true</UpdateAssemblyInfo>

之后的汇编版本是正确的。