我正在尝试使用CLI dotnet命令复制以下Azure管道:
public static Output GetEnumItem<Output, Input>(Input input)
{
//Output type checking...
if (typeof(Output).BaseType != typeof(Enum))
throw new Exception("Exception message...");
//Input type checking: string type
if (typeof(Input) == typeof(string))
return (Output)Enum.Parse(typeof(Output), (dynamic)input);
//Input type checking: Integer type
if (typeof(Input) == typeof(Int16) ||
typeof(Input) == typeof(Int32) ||
typeof(Input) == typeof(Int64))
return (Output)(dynamic)input;
throw new Exception("Exception message...");
}
到目前为止,我可以进行项目构建,但是要获取一个zip文件似乎是有问题的-传递zipAfterPublish等输入似乎无法传递,尽管有一些分散的文档表明可以使用-p传递这些文件: “ optiona = x; optionb = y”或/ p:“ optiona = x; optionb = y”。我找不到确切的文档。
这就是我所拥有的-构建部分有效,$ PWD / out目录填充了许多文件,但没有压缩文件:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration Release --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
我猜这是关于如何将输入(https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops)正确传递给命令的问题。
答案 0 :(得分:1)
我正在尝试使用CLI复制以下Azure管道 dotnet命令:
1。zipAfterPublish
是Dotnet Publish
任务中仅仅可用的一个选项。如果您检查dotnet publish任务的日志,您会发现它没有将诸如zipAfterPublish
之类的任何属性传递给命令:
由于只能以这种方式传递msbuild属性:/p:xxx=xxx
。 zipAfterPublish
无法在命令行中使用,因为它不是msbuild属性,dotnet cli
不支持该选项,仅在Azure Devops Dotnet Publish task
中可用。
2。通常,如果我们要发布一个.net核心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。如果要压缩publish文件夹(生成程序包),dotnet build/publish
将调用msdeploy.exe
来完成此工作,但是由于 MSDeploy缺乏跨平台支持,因此支持以下MSDeploy选项仅在Windows 上。因此,在Linux环境中发布后,不支持dotnet cli命令来生成zip ... Linux中目前不支持您想要的内容。
可能的解决方法:
由于我们可以使用dotnet publish
将项目发布到一个文件夹(Folder works cross-platform)中,因此我们可以在dotnet publish
之后调用另一个zip命令来将其自己压缩。
希望我的回答有助于解决您的难题:)