如何将 azure pipelines dotnet 输入传递给 linux dotnet 二进制文件
How to pass azure pipelines dotnet inputs to the linux dotnet binary
我正在尝试使用 CLI dotnet 命令复制以下 Azure 管道:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
到目前为止,我可以构建项目,但从中获取 zip 文件似乎有问题 - 传递输入 zipAfterPublish 等似乎无法通过,尽管有一些零散的文档表明这些可以通过 - p:"optiona=x;optionb=y" 或 /p:"optiona=x;optionb=y"。我找不到关于此的权威文档。
这就是我所拥有的 - 构建部分有效,$PWD/out 目录中填充了许多文件,但没有压缩文件:
dotnet publish --configuration Release --output $PWD/out /p:"zipAfterPublish=true;publishWebProjects=true"
我猜这是关于如何将输入 (https://docs.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.The zipAfterPublish
是 仅 在 Dotnet Publish
任务中可用的一个选项。如果你检查 dotnet publish 任务的日志,你会发现它没有将任何 属性 像 zipAfterPublish
传递给命令:
因为只有 msbuild 属性 可以通过这种方式传递:/p:xxx=xxx
。 zipAfterPublish
在命令行中不起作用,因为它不是 msbuild 属性,dotnet cli
不支持该选项,仅在 Azure Devops Dotnet Publish task
.
中可用
2.Normally 如果我们想发布一个 .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"
在中有描述。
以上命令可以在 windows 中生成一个 xx.zip 文件夹。
然而:
您似乎处于linux环境中,请检查this document。如果你想压缩发布文件夹(生成一个包),dotnet build/publish
将调用 msdeploy.exe
来完成这项工作,但由于 MSDeploy 缺乏跨平台支持,以下 MSDeploy 选项仅在 Windows 上受支持。所以在 linux 环境中发布后不支持 dotnet cli 命令生成 zip ... Linux.
目前不支持你想要的
可能的解决方法:
由于我们可以使用dotnet publish
将项目发布到一个文件夹(Folder works cross-platform),我们可以在dotnet publish
之后调用另一个zip命令来自己压缩。
希望我的回答能帮助解决您的困惑:)
我正在尝试使用 CLI dotnet 命令复制以下 Azure 管道:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
到目前为止,我可以构建项目,但从中获取 zip 文件似乎有问题 - 传递输入 zipAfterPublish 等似乎无法通过,尽管有一些零散的文档表明这些可以通过 - p:"optiona=x;optionb=y" 或 /p:"optiona=x;optionb=y"。我找不到关于此的权威文档。
这就是我所拥有的 - 构建部分有效,$PWD/out 目录中填充了许多文件,但没有压缩文件:
dotnet publish --configuration Release --output $PWD/out /p:"zipAfterPublish=true;publishWebProjects=true"
我猜这是关于如何将输入 (https://docs.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.The zipAfterPublish
是 仅 在 Dotnet Publish
任务中可用的一个选项。如果你检查 dotnet publish 任务的日志,你会发现它没有将任何 属性 像 zipAfterPublish
传递给命令:
因为只有 msbuild 属性 可以通过这种方式传递:/p:xxx=xxx
。 zipAfterPublish
在命令行中不起作用,因为它不是 msbuild 属性,dotnet cli
不支持该选项,仅在 Azure Devops Dotnet Publish task
.
2.Normally 如果我们想发布一个 .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"
在
以上命令可以在 windows 中生成一个 xx.zip 文件夹。
然而:
您似乎处于linux环境中,请检查this document。如果你想压缩发布文件夹(生成一个包),dotnet build/publish
将调用 msdeploy.exe
来完成这项工作,但由于 MSDeploy 缺乏跨平台支持,以下 MSDeploy 选项仅在 Windows 上受支持。所以在 linux 环境中发布后不支持 dotnet cli 命令生成 zip ... Linux.
可能的解决方法:
由于我们可以使用dotnet publish
将项目发布到一个文件夹(Folder works cross-platform),我们可以在dotnet publish
之后调用另一个zip命令来自己压缩。
希望我的回答能帮助解决您的困惑:)