如何将文件夹添加到nuspec文件

时间:2014-07-03 10:28:54

标签: nuget octopus-deploy nuget-spec

所以我实际上试图将一个网站项目(不是网络应用程序,所以没有csproj文件)打包成一个准备好让Octopus使用的NuGet包,但是又一个又一个地碰到了一个砖墙。

我研究过使用OctoPack,但它不支持网站项目只支持Web应用程序项目。

我现在正试图找到一种方法将文件夹(在我的情况下是一个网站)添加到Nuget包中,但Nuget不通过命令行允许这样做吗?它还需要一个.csproj文件!

我还尝试过创建NuGet规范文件并将其传递到文件夹但不可能?

目前我可能不得不使用NuGet包浏览器,但我想编写脚本。

我已经看过这个问题,但似乎无法处理我的情景 Can I create a nuget package without a project file

所以有人知道如何通过命令行最好地将文件夹添加到NuGet包中吗??

1 个答案:

答案 0 :(得分:39)

我不知道OctoPack,但是使用nuget.exe,打包分两步完成:

  1. 手动创建.nuspec,或从.csproj或现有程序集生成一个。(请参阅the docs中的nuget spec)。
  2. 使用上一步中创建的.nuspec作为参数调用nuget pack
  3. 由于你没有.csproj,你手动创建.nuspec(或使用像NuGet Package Explorer这样的GUI工具)。

    您可以在Nuspec Reference中阅读有关如何创建.nuspec文件的所有内容,特别是有关Specifying Files to Include in the Package的部分。

    如果你想在包中包含一个文件夹(递归?),你需要在XML中添加这样的东西:

    <files>
      <file src="bin\Release\**\*.*" target="content" /> 
    </files>
    

    这将获取bin\Release文件夹的所有文件和(递归)子文件夹,并将它们放在NuGet包的content文件夹中。

    我不知道OctopusDeploy在软件包中的预期格式,但这是您在软件包中包含文件夹的方式。

    编辑OctoPack README中似乎有一些相关文档。