在VSTS构建和发布中排除/跳过文件

8
我们正在创建 VSTS CI/CD 架构,以将我们的 Web 应用部署到 Azure 应用服务。由于我们直接在不同环境上修改 web.config,因此希望在将其部署到 Azure 服务器时排除 web.config。
CI 任务如下所示:CI Taks
CD 任务:部署 Azure 应用服务。我知道有其他更新 web.config 的方法https://learn.microsoft.com/en-us/vsts/build-release/tasks/transforms-variable-substitution,但在我们的情况下,我们想跳过 web.config 文件。我在 VSTS 中找不到跳过文件选项,如此线程中所述How do I exclude the .cs files within an artifact from a vs-team-services CI build?。在构建和部署发布时是否有一种排除某些文件的方法?

你的构建过程是否生成了一个WebDeploy包? - Daniel Mann
嘿,丹尼尔。答案是“是”。 - bluemoon522
4个回答

18

附加参数中添加了-skip:objectName = filePath,absolutePath = web\.config 。这将跳过在部署期间更新web.config文件。 Azure App Service Deployment


9
您可以在构建定义中发布构件之前排除 web.config :将 Web 包文件复制到一个目录(例如 $(build.binariesdirectory)),然后将不包括 web.config 的文件复制到另一个文件夹(例如 $(Build.ArtifactStagingDirectory)/package),并压缩位于 $(Build.ArtifactStagingDirectory)/package 下的文件。最后将 zip 文件作为构建构件发布。请按照以下构建定义中的详细更改进行操作:
  1. Visual Studio Build任务中将MSbuild参数更改为/p:OutDir="$(build.binariesdirectory)\\"

    enter image description here

  2. 在Visual Studio Build任务后添加一个复制文件任务。此任务的设置如下:

    enter image description here

  3. 在复制文件任务后添加归档文件任务。并进行以下设置:

    enter image description here

  4. 发布构件任务更改为以下内容:

    enter image description here

现在构建产物中排除了web.config文件。

感谢Marina提供逐步解决方案。这绝对是问题的解决方案。我还从“Azure应用服务部署”团队得到了另一个解决方案,我将在下面列出。 - bluemoon522
是的,您提供的解决方案更简单和高效。您可以标记自己的答案,这将有益于其他有类似问题的人。 - Marina Liu

1
额外参数。

-skip:objectName=filePath,absolutePath=\\Configuration\\AppSettings\\Base.config

enter image description here


适当编辑你的回答,例如提供一些细节,将图像放入回答中,否则你会被投票降低。 - Avinash Singh
如何使用 -skip:objectName=filePath,absolutePath=filepath 排除多个文件? - Dharti Sutariya

1
你可以添加

-skip:objectName=filePath,absolutePath='.*\PackageTmp\Web.config$'

在“部署IIS网站/应用程序”VSTS任务的附加参数中,这不会部署您的根web.config文件。

请检查您的.config绝对路径?对于.NET Core,路径是不同的。例如,如果您的应用程序是在.NET Core中构建的,则使用-skip:objectName = filePath,absolutePath ='。* \ nlog.config $' -skip:objectName = filePath,absolutePath ='。* \ appsettings.json $' - Gautam Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接