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

3
我发现在创建 .nupkg NuGet 包文件时,OctoPack 非常直观易懂。但是我希望能够包括 .nuspec 文件(目前它被放置在另一个文件夹中,例如 obj/octopackage),并且所有的 dll 应该放在 lib/net452 folder 中,以便整体结构如下所示:

enter image description here

目前,所有应该位于 lib/net452 文件夹中的内容都只是简单地放置在根目录中,与 _relspackage 一起,而且正如之前提到的,.nuspec 文件也丢失了。
要么文档有点稀疏,要么我在我的调试心理阴霾中完全错过了如何做到这一点。有人知道如何指定 OctoPack 将编译输出放置在 .nupkg 文件中的特定位置吗?
1个回答

3
为了创建NuGet包,你应该使用nuget.exe而不是OctoPack。等下我会解释为什么。
.nuspec文件作为NuGet包(.nupkg)的“蓝图”。因此,简单地在你的.nuspec文件中使用元素的target属性指定位置即可。详细信息可以在NuGet网站上找到,但它应该类似于这样:
<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)。 这就是您看到的行为。

由于OctoPack在底层使用nuget.exe,因此.nuspec文件将覆盖上述两种情况。 因此,虽然您可以使用OctoPack来创建NuGet软件包,但更适合使用nuget.exe


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接