如何在 Azure 管道中模拟 Visual Studio 网站的发布操作

How to emulate the Publish action of a web site of Visual Studio in Azure pipeline

我正在 Windows 自托管代理上构建 Azure Pipeline 运行。该项目是 an.Net 2.0 网站。我创建了一个 powershell 脚本,它连接到我们的本地 TFS 2018 服务器并连接到 TFVC 存储库,它将文件复制到 Agent\s 文件夹。

以前在VS2019中构建解决方案时,右键单击主文件夹并单击发布以仅将需要的文件复制到网站的文件夹中。我以一个干净的文件夹结束,没有 *.cs 或额外的配置文件。

我正在尝试对我的管道做同样的事情。我目前有这个任务:

- task: VSBuild@1
  inputs:
    solution: '${{ parameters.solutionToPublishPath }}'
    configuration: '${{ parameters.buildConfiguration }}'
    restoreNugetPackages: false
    createLogFile: true
    logFileVerbosity: 'detailed'

这构建了我的解决方案,但没有像我以前在 VS2019 中那样发布它。我看到我可以使用这个:

“msbuildArgs: '/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.BinariesDirectory)\"'”

但这似乎不起作用,我对 MsBuild 参数真的很糟糕。

构建后,我希望在二进制文件文件夹中发布操作的结果,并最终将二进制文件压缩到 artefact 文件夹中,如下所示:

Agent
--- \s
--- --- \depend1
--- --- \depend2
--- --- \portal
--- --- --- \bin\*
--- --- --- \module1\*.htm, *.aspx, *.ascx, *.cs
--- --- --- \module2\*.htm, *.aspx, *.ascx, *.cs
--- --- --- \*.htm, *.aspx, *.ascx, *.cs
--- \b
--- --- \portal
--- --- --- \bin\*
--- --- --- \module1\*.htm, *.aspx, *.ascx
--- --- --- \module2\*.htm, *.aspx, *.ascx
--- --- --- \*.htm, *.aspx, *.ascx
--- \a
--- --- \portal.zip

我需要多次调用 VSBuild@1 吗? 你能帮我设置 MsBuild 参数吗?

谢谢

如果要使用 MSBuild Arguments 将文件压缩为 zip,可以使用 OutputPath,如下所示:

/p:OutputPath=c:\yourdir\output.zip

以下是我的测试和结果:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:OutputPath=c:\testmsbuild\output.zip /p:PackageLocation="$(build.artifactstagingdirectory)\"