用于TFS持续集成的NuGet包
我正在尝试使我们的TFS构建过程从我们的解决方案项目中生成NuGet包。 我们的目标是创建一个私有包源,因此所有其他内部产品可以使用NuGet下载/更新框架。
到目前为止,我们已经运行了构建过程(很长一段时间)并对我们的库进行版本控制,唯一剩下的就是“ nuget pack ”所有项目。
到目前为止我尝试了什么:
- nuget spec * .csproj,然后是nuget pack * .nuspec;
- nuget spec * .dll,然后是nuget pack * .nuspec;
- nuget pack * .csproj直接(没有.nuspec文件);
所有这些似乎都有效,但所有这些似乎都失败了我实际需要它们成功的步骤。
我通过上述步骤实际得到的结果:
-
没有列出依赖¹, 没有列出参考²;
-
没有列出依赖关系¹, 没有列出引用²,目录中的所有dll都打包在同一个.nupkg上(whitout使用-IncludeReferencedProjects);
-
(目前为止最好的)列出了一些依赖项¹, 没有列出引用,只有实际的项目dll在.nupkg上的lib文件夹中。
¹: 依赖于我的意思是NuGet依赖,来自NuGet的包
²: 参考我的意思是解决方案项目参考。
示例场景:
Solution1.sln
– ProjectA
– ProjectB
ProjectA有ProjectB的项目参考 。 我希望在生成的.nuspec上发生什么:
ProjectA <- OK 1.2.0.0 < - OK ProjectA <- OK My Company <- OK My Company <- OK false Description OK <<<<<<---- NOT HAPPENING!
列出了一些nuget依赖项,但不是所有这些依赖项(即使它们位于refeered项目的packages.config中)。 例如:我有一个项目依赖于其他4个NuGet包,只有2个被列为生成的.nuspec文件的依赖项。
重要信息:
- 每个项目都有自己的packages.config,NuGet构建它的方式;
- 解决方案文件夹包含packages文件夹,包含所有引用的包;
- 已经尝试过Nugetter(在VS 2012.3和TFS 2012上打破XAML,无法打开它)
- 已经尝试过这个 ,也没有正确地包含依赖项和引用;
- 解决方案包恢复已打开(我们需要这样做以避免将包存储在TFS上)。
我需要的:
- 自动化pack进程以打包每个csproj,包括.nuspec文件上的所有引用和依赖项,因此在安装它们时将正确加载它们。
我研究过类似的问题:
NuGet:pack命令不包括nuget依赖项
Nuget pack仅包含某些项目的依赖项
为什么nuget在包装时不包括引用的项目?
事实certificate这是一个简单的路径问题。 由于我是从不同的工作目录执行命令,因此未正确添加引用和依赖项。
最重要的是,使用-IncludeReferencedProjects是正确添加所需内容所必需的。
之后,使用Powershell的构建过程成功完成,一切都按预期工作=)
pack命令有一个选项,用于包含必须指定的项目引用: http : //docs.nuget.org/docs/reference/command-line-reference#Pack_Command_Options 。
您需要定位csproj文件,我建议您手动创建一个nuspec文件。