3

我发现 OctoPack 在创建.nupkgnuget 包文件时非常简单,但是我希望包含该文件(当前放置在另一个文件夹中,例如 obj/octopackage 或其他文件夹),并且所有 dll 都应该.nuspec放在lib/net452 folder一般结构如下所示:

在此处输入图像描述

目前,应该_rels在 lib/net452 文件夹中的所有内容都与and一起简单地放在根目录中,package并且如上所述,该.nuspec文件丢失了。

要么文档有点稀疏,要么我完全错过了如何在我的调试心理阴霾中做到这一点。任何人都知道如何指定 OctoPack 的具体位置,将编译后的输出放在.nupkg文件中?

4

1 回答 1

3

要创建 NuGet 包,您应该使用nuget.exe,而不是 OctoPack。我会在一分钟内解释为什么。

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

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

有多种方法可以在构建后步骤中调用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更合适。

于 2016-03-26T01:37:52.663 回答