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

时间:2016-03-25 17:14:24

标签: nuget nuget-package octopus-deploy octopack

我发现在创建.nupkg nuget包文件时,OctoPack非常直接,但是我想要包含.nuspec文件(目前放在另一个文件夹中,例如obj / octopackage或者其他东西) ),所有的dll都应放在lib/net452 folder内,以便一般结构如下:

enter image description here

目前应该位于lib / net452文件夹中的所有内容都只是放在根目录中,还有_relspackage,如上所述{{1}文件丢失了。

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

1 个答案:

答案 0 :(得分:3)

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

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

<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)打包。这是您正在看到的行为。
  3. 由于OctoPack使用了 nuget.exe .nuspec文件将覆盖上述两种情况。因此,当您可以使用OctoPack创建NuGet包时,使用 nuget.exe 更合适。