要创建 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 创建包而设计的。它通过以下两种方式之一创建包:
- 如果存在
web.config
文件,OctoPack 假定该项目是一个 Web 项目,并相应地打包输出。它使用项目文件来确定哪些项目被标记为内容,哪些不是(尽管它总是会抓取 web.config 转换文件)。
- 否则,OctoPack 假定项目是可执行文件或组件,并简单地打包它在输出文件夹中找到的任何内容(通常是
\Debug\bin
或\Release\bin
)。这是您所看到的行为。
由于 OctoPack 在后台使用nuget.exe,因此.nuspec
文件将覆盖上述两种情况。因此,虽然您可以使用 OctoPack 创建 NuGet 包,但使用nuget.exe更合适。