我无法让nuget pack X.csproj
识别项目中的包依赖项。令人惊讶的是,在打包时,诊断消息“Found packages.config。使用列为依赖项的包“,但最终包中的<dependencies/>
文件中的.nuspec
标记为空。
项目的packages.config
确实包含引用:
<packages>
<package id="SmartAction.Logger" version="1.0.2.0" targetFramework="net40" />
<package id="SmartAction.Pervasive" version="1.0.1.0" targetFramework="net40" />
</packages>
为了缩小问题范围,我删除了自己的并行.nuspec
文件,并且大多数都来自nuget pack
命令:
> nuget pack libToneDetection.csproj -prop Configuration=Release
MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
Attempting to build package from 'libToneDetection.csproj'.
Packing files from '[snip]\Core\ToneDetection\libToneDetection\bin\Release'.
Found packages.config. Using packages listed as dependencies
Successfully created package '[snip]\Core\ToneDetection\libToneDetection\SmartAction.Audio.ToneDetection.1.0.0.0.nupkg'.
NuGet版本:3.3.0.212
我可以发现这个项目的唯一区别是它的名称与包名不同(我试图保持它们同步,但这是我重新包装的旧东西)。
我怀疑我以前见过这个。我发现问题来自于那些试图阻止在packages.config中引用的人来成为包的依赖关系,但没有人试图像我一样试图击败反向问题。救命啊!
附录。我将解决方案中的项目与其他项目一起复制到临时目录并从那里重建了包。现在来自packages.config
的两个依赖项中的一个被添加到包中:
<dependencies>
<dependency id="SmartAction.Logger" version="1.0.2.0" />
</dependencies>
考虑到两者之间的差异,SmartAction.Logger
包取决于SmartAction.Pervasive
。但我正在编译的软件包确实使用了这两种软件。
对我来说,这两种行为看起来都不正确。我遇到了一个nuget bug,还是一个神秘的复杂功能?