Dependencies NuGet:pack命令不包括NuGet依赖项
我有以下设置:Dependencies NuGet:pack命令不包括NuGet依赖项,dependencies,package,nuget,Dependencies,Package,Nuget,我有以下设置: nuget.exe版本:1.6.21205.9031 Project A.csproj打包到A.1.0.0.0.nupkg中,并发布到本地IIS上托管的本地包存储库(我的VS Nuget扩展我可以将A包添加到新项目) Project B.csproj依赖于我添加的VS Nuget扩展的a包 现在,当我跑的时候 nuget spec 创建了B.nuspec 然后我就跑 nuget pack B.csproj -verbose 但是在创建的B包中,它们与A包没有依赖关系。nu
- nuget.exe版本:1.6.21205.9031
- Project A.csproj打包到A.1.0.0.0.nupkg中,并发布到本地IIS上托管的本地包存储库(我的VS Nuget扩展我可以将A包添加到新项目)
- Project B.csproj依赖于我添加的VS Nuget扩展的a包
nuget spec
创建了B.nuspec
然后我就跑
nuget pack B.csproj -verbose
但是在创建的B包中,它们与A包没有依赖关系。nuget pack命令告诉我它已经找到了packages.config文件(其中包含对A-package的依赖项),但随后它说“Dependencies:None”
我错过了什么?问题是A包只能在我的本地包存储库中找到吗?如何使nuget.exe知道此本地存储库
非常感谢 “
Nuget.exe spec A.csproj
”将创建一个非常精简的NuSpec文件,该文件没有任何依赖项。对于我们的流程,使用powershell脚本将项目引用和其他依赖项从项目的packages.config
添加到B.nuspec
中的
节点
“
Nuget.exe pack A.nuspec
”将是正确的。我想我可能已经解决了这个问题
我们的库解决方案已启用Nuget包还原。我关闭了NuGet Package Restore,之后在创建NuGet软件包时,项目依赖项被包括在内
我不太清楚为什么在打开包还原时包中没有包含依赖项,但是哦:)。
nuget-pack
需要能够找到packages
文件夹才能解析依赖项(请参阅),或者在与.csproj相同的文件夹中(只要有一个.sln
文件在其上一级)或在NuGet.Config
中指定的文件夹中,就会有类似的问题,答案说明:
这些导致问题的原因是,NuGet查找解决方案级别的packages文件夹来决定要拉入哪些包依赖项(不太确定如何确定)。如果指向该packages文件夹的路径不正确(就像NuGet使用错误的解决方案文件一样),则无法正确解析依赖关系。此外,如果packages文件夹为空,则也无法正确解析依赖关系
我也遇到了同样的问题,将解决方案文件添加到项目文件夹(以前没有解决方案)帮助我解决了这个问题。我缺少依赖项,因为我使用的所有软件包的
*.nupkg
文件夹中都没有文件
这很难追踪,因为nuget-pack
的输出看起来很正常:
Found packages.config. Using packages listed as dependencies
我一直在使用并且只注释掉了关于“包还原”的一行(因为我想提交我的包),但我应该注释掉两行。它应该是这样的:
# NuGet Packages
# *.nupkg
# The packages folder can be ignored because of Package Restore
# **/packages/*
感谢您链接到,feiling在这里解释了如何使用packages
文件夹:
因为packages.config
只包含一个包列表,而不包含
包含这些包之间的依赖关系,nuget需要
访问那些包文件以获取依赖项信息。这就是它的原因
需要知道packages文件夹
feiling引用的依赖项信息在*.nupkg
文件中。一旦我更改了.gitignore
并提交了所有缺少的*.nupkg
文件,我的TeamCity build server就能够成功地创建具有正确依赖项的NuGet包。我很想知道这个问题的答案em也是。文档说明nuget pack B.csproj步骤应该包括依赖项,但对我来说不是。这里仍然存在相同的问题,并且列出的解决方案都不起作用。看起来与我遇到的问题相同,只是在我的情况下,实际上包含了三分之一的依赖项。请注意,OP正在使用nuget pack
和.csproj文件。这是为了将.csproj中记录的依赖项考虑在内,包括使用nuget添加的依赖项以及对同一解决方案中具有.nuspec文件的其他项目的任何引用。+1我已将包
文件夹自定义为nuget.Config中的nuget包
。将其重新命名为我解决了这个问题。我不会这样做hink NuGet如果无法将依赖项添加到其依赖项列表中,将失败或至少发出警告,因为这会导致生成不正确的包,并且依赖项列表不完整。我希望有一个选项可以在此类问题上失败,而不是“成功完成”并让软件包的用户去了解为什么事情对他们不起作用。由于网站已移动,链接已断开,新位置上的3097问题似乎与此无关。如果您能在新位置上找到相同的问题并更新链接,我将不胜感激。您仍然可以在Codeplex上找到问题,只需单击下面的“问题”在屏幕顶部搜索“Nuget pack”会忽略包中的依赖项。config“在上重新发布了问题,Nuget认为项目的唯一依赖项是其他Nuget包是一个大失败。当然,项目通常依赖于同一解决方案中的其他项目。