Nuget Pack无法识别依赖项中的$版本$



因此,以前我们使用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"

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

最新更新