指定 Octopack nuget 包文件的目标路径
Posted
技术标签:
【中文标题】指定 Octopack nuget 包文件的目标路径【英文标题】:Specify Octopack nuget package file's target path 【发布时间】:2016-03-25 17:14:24 【问题描述】:我发现 OctoPack 在创建 .nupkg
nuget 包文件时非常简单,但是我希望包含 .nuspec
文件(当前放置在另一个文件夹中,例如 obj/octopackage 或其他东西),以及所有dll 应放置在 lib/net452 folder
内,以便一般结构如下所示:
目前应该在 lib/net452 文件夹中的所有内容,连同 _rels
和 package
,都简单地放在根目录下,并且如前所述,.nuspec
文件丢失了。
要么文档有点稀疏,要么我完全错过了如何在我的调试心理阴霾中做到这一点。任何人都知道如何指定 OctoPack,具体来说,将编译后的输出放在 .nupkg
文件中?
【问题讨论】:
【参考方案1】:要创建 NuGet 包,您应该使用 nuget.exe,而不是 OctoPack。我会在一分钟内解释原因。
.nuspec
文件用作 NuGet 包 (.nupkg
) 的“蓝图”。因此,简短的回答是使用<files>
元素的target
属性简单地指定.nuspec
文件中的位置。可以在NuGet site 上找到详细信息,但它看起来像这样:
<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 更合适。
【讨论】:
以上是关于指定 Octopack nuget 包文件的目标路径的主要内容,如果未能解决你的问题,请参考以下文章
Nuget 3 - Octopack - 错误的框架目标错误
运行 OctoPack 以创建包含 DEBUG 程序集的 nuget 包
TFS2017 - 使用 octopack 凭据进行 NuGet 推送