gpt4 book ai didi

linux - 如何将 azure pipelines dotnet 输入传递到 linux dotnet 二进制文件

转载 作者:行者123 更新时间:2023-12-03 05:38:12 26 4
gpt4 key购买 nike

我正在尝试使用 CLI dotnet 命令复制以下 Azure 管道:

- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True

到目前为止,我可以构建项目,但是从中获取 zip 文件似乎有问题 - 传递输入 zipAfterPublish 等似乎无法通过,尽管有一些分散的文档表明可以使用 -p 传递这些文件: “选项a=x;选项b=y”或/p:“选项a=x;选项b=y”。我找不到这方面的明确文档。

这就是我所拥有的 - 构建部分有效,$PWD/out 目录填充了许多文件,但没有压缩任何内容:

dotnet publish --configuration Release --output $PWD/out /p:"zipAfterPublish=true;publishWebProjects=true"

我猜这与如何将输入( https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops )正确传递给命令有关。

最佳答案

I am trying to replicate the following Azure pipeline using the CLI dotnet command:

1.zipAfterPublishDotnet Publish 任务中可用的选项。如果您检查 dotnet 发布任务的日志,您会发现它没有将 zipAfterPublish 等任何属性传递给命令:

enter image description here

因为只有msbuild属性可以通过这种方式传递:/p:xxx=xxxzipAfterPublish 无法在命令行中工作,因为它不是 msbuild 属性,该选项在 dotnet cli 中不受支持,仅在 Azure Devops Dotnet Publish 任务中可用.

2.通常如果我们想发布一个.net core web项目并在本地使用dotnet cli发布后对其进行压缩,我们可以使用如下命令:

dotnet publish xx.csproj /nologo /p:PublishProfile=xxx /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /maxcpucount:1 /p:platform=xxx /p:configuration=xxx /p:DesktopBuildPackageLocation=SomePath\xxx.zip

或者

dotnet build xxx.sln /nologo /p:PublishProfile=Release /p:PackageLocation="C:\Some\Path\package" /p:OutDir="C:\Some\Path\out" /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /maxcpucount:1 /p:platform="Any CPU" /p:configuration="Release" /p:DesktopBuildPackageLocation="C:\Some\Path\package\package.zip"

this issue 中对此进行了描述。

以上命令可以在windows下生成xx.zip文件夹。

但是:

您似乎处于linux环境,请检查 this document 。如果您想压缩发布文件夹(生成包),dotnet build/publish 将调用 msdeploy.exe 来完成此工作,但由于MSDeploy 缺少跨平台支持,以下 MSDeploy 选项仅在 Windows 上受支持。所以linux环境下发布后不支持dotnet cli命令生成zip...Linux暂时不支持你想要的。

可能的解决方法:

由于我们可以使用 dotnetpublish 将项目发布到一个文件夹( Folder works cross-platform ),因此我们可以在 dotnetpublish 之后调用另一个 zip 命令来自行压缩它。

希望我的回答能帮助解决你的困惑:)

关于linux - 如何将 azure pipelines dotnet 输入传递到 linux dotnet 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60813870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com