指定 Octopack nuget 包文件的目标路径

Specify Octopack nuget package file's target path

我发现 OctoPack 在创建 .nupkg nuget 包文件时非常简单,但是我希望包含 .nuspec 文件(目前位于另一个文件夹中,例如 obj/octopackage 之类的),并且所有的 dll 都应该放在 lib/net452 folder 中,以便一般结构显示为:

目前 应该 位于 lib/net452 文件夹中的所有内容,连同 _relspackage,以及如前所述,.nuspec 文件丢失。

要么是文档有点稀疏,要么是我在调试时完全忘记了如何执行此操作。任何人都知道如何指定 OctoPack 在哪里,特别是将编译后的输出放在 .nupkg 文件中?

要创建 NuGet 包,您应该使用 nuget.exe,而不是 OctoPack。我稍后会解释原因。

.nuspec 文件用作 NuGet 包 (.nupkg) 的 "blueprint"。因此,简短的回答是使用 <files> 元素的 target 属性简单地指定 .nuspec 文件中的位置。可以在 NuGet site 上找到详细信息,但它看起来像这样:

<files>
  <file src="bin$configuration$\*.dll" target="lib\net452\" />
</files>

在 post-构建步骤中有多种调用 nuget.exe 的方法;许多内容也在 NuGet 网站上进行了解释。

OctoPack 并不是要为 nuget.org 创建包;它专门用于为 Octopus Deploy 创建包。它通过以下两种方式之一创建包:

  1. 如果存在 web.config 文件,OctoPack 会假定该项目是 Web 项目,并相应地打包输出。它使用项目文件来确定哪些项目被标记为内容,哪些不是(尽管它总是会获取 web.config 转换文件)。
  2. 否则,OctoPack 假定该项目是可执行文件或组件,并简单地打包它在输出文件夹中找到的任何内容(通常是 \Debug\bin\Release\bin)。这就是您所看到的行为。

由于 OctoPack 在后台使用 nuget.exe.nuspec 文件将覆盖上述两种情况。因此,虽然您 可以 使用 OctoPack 创建您的 NuGet 包,但使用 nuget.exe.

更合适