小编Ori*_*lBG的帖子

如何避免在服务器上部署 *.<Environment>.config 转换

我正在使用 VSTS 在多个环境中进行部署。和往常一样,配置文件上的一些参数需要根据环境而不同,因此我将使用配置转换将其部署到目标环境中。

由于我想要包含稍后应用的配置和转换的包,因此我将构建操作设置为内容:

<Content Include="App_Config\MyConfig.config" />
<Compile Include="App_Config\MyConfig.prod.config">
  <DependentUpon>MyConfig.config</DependentUpon>
</Compile>
<Compile Include="App_Config\MyConfig.uat.config">
  <DependentUpon>MyConfig.config</DependentUpon>
</Compile>
<Compile Include="App_Config\MyConfig.dev.config">
  <DependentUpon>MyConfig.config</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)

包正确完成,部署也是如此(MyConfig.config 已根据其运行的环境更改参数)。我的问题是在服务器机器上我也有 MyConfig.*.config 文件。

查看官方文档示例说明(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/transforms-variable-substitution?view=vsts#xml-transformation-example)没有给出任何明确的信息. 这只是“msbuild 会在打包之前完成,而 azure 不会”,但并没有解释如何做到这一点。

编辑:我使用的解决方案。

基本上我无法避免保持工件清洁,因为它们不依赖于环境。因此,在所有发布管道之后,我添加了一个删除文件作业(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/utility/delete-files?view=vsts)以使用以下内容删除所有配置文件参数:

源文件夹:
    $(wwwRoot)\

内容:
    **\*.Debug.config
    **\*.Release.config
    **\*.UAT.config
    **\*.PROD.config

web-config msdeploy visual-studio web-config-transform azure-devops

6
推荐指数
1
解决办法
1162
查看次数