28

所以我实际上是在尝试将一个网站项目(不是 Web 应用程序,所以没有 csproj 文件)打包到一个 NuGet 包中,准备好让 Octopus 使用,但我又遇到了一堵砖墙。

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

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

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

目前我可能不得不使用 NuGet 包资源管理器,但我想编写脚本。

我看过这个问题,但似乎无法处理我的场景 我可以在没有项目文件的情况下创建一个 nuget 包吗

那么有谁知道如何通过命令行最好地将文件夹添加到 NuGet 包!?

4

1 回答 1

45

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

  1. 要么手动创建 .nuspec,要么从 .csproj 或现有程序集生成一个(参见nuget spec文档
  2. nuget pack使用在上一步中创建的 .nuspec 作为参数调用。

由于您周围没有 .csproj,因此您无法手动创建 .nuspec(或使用NuGet Package Explorer之类的 GUI 工具)。

您可以在Nuspec 参考中阅读有关如何创建 .nuspec 文件的所有信息,特别是有关指定要包含在包中的文件的部分。

如果您想在包中包含一个文件夹(递归?),您需要在 XML 中添加类似这样的内容:

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

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

我不知道 OctopusDeploy 期望在包中采用什么格式,但这就是在包中包含文件夹的方式。

编辑:在OctoPack README中似乎有一些关于此的文档。

于 2014-07-03T10:48:05.507 回答