指定 Octopack nuget 包文件的目标路径
Specify Octopack nuget package file's target path
我发现 OctoPack 在创建 .nupkg
nuget 包文件时非常简单,但是我希望包含 .nuspec
文件(目前位于另一个文件夹中,例如 obj/octopackage 之类的),并且所有的 dll 都应该放在 lib/net452 folder
中,以便一般结构显示为:
目前 应该 位于 lib/net452 文件夹中的所有内容,连同 _rels
和 package
,以及如前所述,.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 创建包。它通过以下两种方式之一创建包:
- 如果存在
web.config
文件,OctoPack 会假定该项目是 Web 项目,并相应地打包输出。它使用项目文件来确定哪些项目被标记为内容,哪些不是(尽管它总是会获取 web.config 转换文件)。
- 否则,OctoPack 假定该项目是可执行文件或组件,并简单地打包它在输出文件夹中找到的任何内容(通常是
\Debug\bin
或 \Release\bin
)。这就是您所看到的行为。
由于 OctoPack 在后台使用 nuget.exe,.nuspec
文件将覆盖上述两种情况。因此,虽然您 可以 使用 OctoPack 创建您的 NuGet 包,但使用 nuget.exe.
更合适
我发现 OctoPack 在创建 .nupkg
nuget 包文件时非常简单,但是我希望包含 .nuspec
文件(目前位于另一个文件夹中,例如 obj/octopackage 之类的),并且所有的 dll 都应该放在 lib/net452 folder
中,以便一般结构显示为:
目前 应该 位于 lib/net452 文件夹中的所有内容,连同 _rels
和 package
,以及如前所述,.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 创建包。它通过以下两种方式之一创建包:
- 如果存在
web.config
文件,OctoPack 会假定该项目是 Web 项目,并相应地打包输出。它使用项目文件来确定哪些项目被标记为内容,哪些不是(尽管它总是会获取 web.config 转换文件)。 - 否则,OctoPack 假定该项目是可执行文件或组件,并简单地打包它在输出文件夹中找到的任何内容(通常是
\Debug\bin
或\Release\bin
)。这就是您所看到的行为。
由于 OctoPack 在后台使用 nuget.exe,.nuspec
文件将覆盖上述两种情况。因此,虽然您 可以 使用 OctoPack 创建您的 NuGet 包,但使用 nuget.exe.