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

C# Nuget pack无法识别依赖项中的$version$,c#,nuget,C#,Nuget,因此,前面我们使用nuspec文件调用了nuget pack(nuget pack myproj.nuspec)。nuspec看起来像这样: <package> <metadata> <version>$version$</version> [more properties] <dependencies> <dependency id="MySubProj" version="$versio

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

<package>
  <metadata>
    <version>$version$</version>
    [more properties]
    <dependencies>
      <dependency id="MySubProj" version="$version$" />
      [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>
虽然没有那么干净,但它很管用

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