Nuget pack无法识别依赖项中的$ version $

时间:2016-06-17 14:50:26

标签: 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时它会起作用:/

1 个答案:

答案 0 :(得分:2)

使用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"

它不是那么干净,但它有效。