c# - Nuget 包无法识别依赖项中的 $version$

标签 c# nuget

因此,之前我们使用 nuspec 文件 (nuget pack myproj.nuspec) 调用了 nuget pack。 nuspec 看起来像这样:

<package>
  <metadata>
    <version>$version$</version>
    [more properties]
    <dependencies>
      <dependency id="MySubProj" version="$version$" />
      [more explicit dependencies]
    </dependencies>
  </metadata>  
</package>

我将调用切换到 (nuget pack myproj.csproj),这样我们总是过时的显式依赖项就会自动生成。

一切都很好,除了现在完成的 nuspec 是这样的

<package>
  <metadata>
    <version>1.2.3.4</version>
    [more properties]
    <dependencies>
      <dependency id="MySubProj" version="0.0.0.0" />
      [more explicit dependencies]
    </dependencies>
  </metadata>  
</package>

虽然 MySubProj 的正确版本也是 1.2.3.4。

更多信息:

  • MySubProj 是同一个解决方案中的项目
  • 它被捆绑到一个单独的 nuget 包中
  • MySubProj nuget 包的版本以及捆绑的 dll 的版本都是正确的。

我真的不明白我做错了什么,以及为什么直接使用 nuspec 与 csproj 时它会起作用:/

最佳答案

在将 csproj 与 nuspec(NuGet 3.5 仍然存在)结合使用时,这似乎是一个非常古老的错误......

实现此功能的一种方法是添加一个额外的属性

<package>
  <metadata>
    <version>$version$</version>
    [more properties]
    <dependencies>
      <dependency id="MySubProj" version="$PackageVersion$" />
      [more explicit dependencies]
    </dependencies>
  </metadata>  
</package>

然后更新你的命令

NuGet.exe pack myproject.csproj -Version 1.2.3.4 -Properties "PackageVersion=1.2.3.4"

它不是那么干净,但它可以工作。

关于c# - Nuget 包无法识别依赖项中的 $version$,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37884587/

相关文章:

powershell - 使用 NuGet 上游源的 Azure DevOps 工件提要安装包失败

powershell - 无人值守安装 ilmerge

c# - 复选框列表循环不起作用

c# - c# 中的 sql 查询中的索引(从零开始)

c# - 索引频繁更新的FieldCache

visual-studio - TeamCity CI无法找到NuGet

visual-studio - 如何使用 PowerShell 添加许可证文件作为自定义 NuGet 包的一部分

c# - DynamicActivity - 如何调用存储在数据库中的工作流?

c# - 新 Visual Studio 2019 中的环境变量为空,但 Visual Studio 2017 中没有

visual-studio - 删除或更新大包极其缓慢