【发布时间】:2020-12-29 12:40:16
【问题描述】:
我有以下情况:
有一个库 LibF,我将其构建为 nuget 包,它包含 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 引用的版本。
什么会导致这样的问题?
【问题讨论】:
-
这听起来像是库中的打包问题。你联系图书馆作者了吗?是你自己的图书馆吗?如果是这样:你是如何包装它的?
-
我编辑以回答您的问题。我自己用 Visual Studio 直接从 csproj 打包,而不是单独的 nusepc。