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