Msbuild 团队服务构建工件

Msbuild 团队服务构建工件,msbuild,azure-devops,msbuild-task,Msbuild,Azure Devops,Msbuild Task,我正在尝试创建一个构建,该构建将构建我的解决方案,根据需要应用web.config转换,并最终将所需的输出(构建的web api项目)复制到构建的工件区域 我正在使用Azure Webapp模板和Azure App Service部署步骤禁用(因为我们处于移动到Azure的中间),在生成步骤中使用以下构建参数: /p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:SkipinValidConf

我正在尝试创建一个构建,该构建将构建我的解决方案,根据需要应用web.config转换,并最终将所需的输出(构建的web api项目)复制到构建的工件区域

我正在使用Azure Webapp模板和Azure App Service部署步骤禁用(因为我们处于移动到Azure的中间),在生成步骤中使用以下构建参数:

/p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:SkipinValidConfiguration=true/p:PackageLocation=“$(build.artifactstagingdirectory)\”/p:AutoParameterizationWebConfigConnectionString=False

除了生成的zip文件的结构(具有以下结构)之外,所有工作都按预期进行:

{ZipFileName}{ProjectName\Content\C\u C\a\1\s\Api{ProjectName\obj\Release\Package\PackageTmp…{BuildContent}


如果可能的话,我希望内容位于已发布zip文件的根目录下。这是使用Powershell或许多其他内置构建任务操纵$(build.artifactstagingdirectory)内容的最佳方法吗?

您不必担心,因为它不会保留文件夹结构(仅PackageMP文件夹中的文件和文件夹)部署到web服务器后(例如IIS、Azure web App)

如果仍然需要将文件包括在PackageMP文件夹中,可以通过步骤将构建步骤添加到存档文件到zip文件

对于Visual Studio生成步骤,为MSBuild参数指定/p:DeployOnBuild=true


“这是为了找到生成的项目:”你这是什么意思?是的,它写得很糟糕,已经编辑过了。@MattRowett你解决了这个问题吗?@Matt,你是如何让MSBuild步骤生成Web部署包的?我已经使用了你建议的MSBuild参数,但我似乎无法让它生成zip。@cesarb你的意思是部署到Azure应用程序服务吗?如果是这样,就有一个构建任务具体来说。这是为了直接访问构建步骤输出的嵌套构建内容。我在哪里可以看到生成的zip文件?我在构建摘要中没有工件链接。找到它后,我需要将归档步骤放在发布工件步骤之前。因为我现在只想在工件下载中看到构建的项目,所以我只需要c已挂起发布工件…从$(build.artifactstagingdirectory)发布到{Project}I\obj\Dev\Package\PackageTmp\的路径。这在源代码管理中不存在\obj文件夹,并且无法使用UI省略号浏览之前并不明显。@MattRowett基于原始帖子,结构是\1\s\Api{ProjectName\obj\Release\Package\PackageTmp,因此首先,如果您只希望在工件下载中发布生成的项目,请将Api\{ProjectName]\bin指定为发布生成工件步骤的发布路径。其次,源代码管理中不存在obj文件夹,您需要直接指定它(该值类似于Api[ProjectName]\obj\Release\Package\PackageTmp,您可以在Visual Studio生成日志中获取详细路径(搜索CopyAllFilesToSingleFoldPerformsDeploy)