Azure DevOps:使用 Chocolatey 发布独立的 .net Core 应用程序

Azure DevOps: publish self-contained .net Core app with Chocolatey

我需要创建一个独立的 .net 核心(在我的例子中是 3.1)应用程序并使用 chocolatey 打包和发布以便安装和使用。

我正在使用 Azure DevOps 并且有一个我自己的提要,我应该在其中发布巧克力包。

objective 是在构建管道中执行此操作,因此,除其他任务外,我还有:

我当前的问题是创建的 .nupkg 文件始终包含项目文件而不是生成的可执行文件。

为了尝试解决这个问题,我什至将 chocolatey pack 的任务工作目录设置为与 dotnet publish 的任务输出目录相同。

我错过了什么?还有其他方法吗?

Azure DevOps: publish self-contained .net Core app with Chocolatey

这取决于您是否在 .nuspec 文件中包含包含的可执行文件。

如果我们在 .nuspec 文件中包含包含的可执行文件,chocolatey 将创建 .nupkg 包含包含的可执行文件,如:

  <files>
    <file src="IngestCanonicLtesConsole\ContainedExecutable.exe" target="Tools\ContainedExecutable.exe" />
  </files>

我们可以在包中添加这个包含的可执行文件:

因此,如果我们只包含必填字段而没有<files>contained executable </files>,则不会包含包含的可执行文件。

此外,我们需要将包含的可执行文件包含在.nuspec文件中,我们可以将dotnet构建的输出更改为$(System.DefaultWorkingDirectory)\IngestCanonicLtesConsole,这样我们就可以使用相对路径.nuspec 文件。

请查看文档 .nuspec reference 了解更多详情。

经过几次测试后,我意识到巧克力包将“打包”存在于与“.nuspec”相同的文件夹中的所有文件。不确定这是因为我没有在工具上设置任何东西。

基本上,我的解决方案是将我的“.nuspec”文件复制到我的可执行文件所在的文件夹。