用于TFS持续集成的NuGet包

我正在尝试使我们的TFS构建过程从我们的解决方案项目中生成NuGet包。 我们的目标是创建一个私有包源,因此所有其他内部产品可以使用NuGet下载/更新框架。

到目前为止,我们已经运行了构建过程(很长一段时间)并对我们的库进行版本控制,唯一剩下的就是“ nuget pack ”所有项目。


到目前为止我尝试了什么:

  1. nuget spec * .csproj,然后是nuget pack * .nuspec;
  2. nuget spec * .dll,然后是nuget pack * .nuspec;
  3. nuget pack * .csproj直接(没有.nuspec文件);

所有这些似乎都有效,但所有这些似乎都失败了我实际需要它们成功的步骤。

我通过上述步骤实际得到的结果:

  1. 没有列出依赖¹, 没有列出参考²;

  2. 没有列出依赖关系¹, 没有列出引用²,目录中的所有dll都打包在同一个.nupkg上(whitout使用-IncludeReferencedProjects);

  3. (目前为止最好的)列出了一些依赖项¹, 没有列出引用,只有实际的项目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文件。