【问题标题】:DLL in nuget references Version=0.0.0.0nuget 中的 DLL 引用版本 = 0.0.0.0
【发布时间】: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。

标签: c# nuget


【解决方案1】:

csproj 的 PropertyGroup 中缺少以下内容:

<UpdateAssemblyInfo>true</UpdateAssemblyInfo>

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

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 2016-04-16
    • 2017-04-25
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多