我发现在创建.nupkg
nuget包文件时,OctoPack非常直接,但是我想要包含.nuspec
文件(目前放在另一个文件夹中,例如obj / octopackage或者其他东西) ),所有的dll都应放在lib/net452 folder
内,以便一般结构如下:
目前应该位于lib / net452文件夹中的所有内容都只是放在根目录中,还有_rels
和package
,如上所述{{1}文件丢失了。
文档有点稀疏,或者我在调试心理阴霾时完全错过了如何做到这一点。任何人都知道如何指定OctoPack,具体来说,将编译后的输出放在.nuspec
文件中?
答案 0 :(得分:3)
要创建NuGet包,您应该使用 nuget.exe ,而不是OctoPack。我会在一分钟内解释原因。
.nuspec
文件作为"蓝图"为您的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创建包。它以两种方式之一创建包:
web.config
文件,OctoPack会假定该项目是一个Web项目,并相应地打包输出。它使用项目文件来确定哪些项被标记为内容,哪些项不被标记(尽管它总是会获取web.config转换文件)。\Debug\bin
或\Release\bin
)打包。这是您正在看到的行为。由于OctoPack使用了 nuget.exe ,.nuspec
文件将覆盖上述两种情况。因此,当您可以使用OctoPack创建NuGet包时,使用 nuget.exe 更合适。