我正在使用VSTS在多个环境中进行部署。而且像往常一样,配置文件中的某些参数需要根据环境而有所不同,因此我将使用配置转换将其部署在目标环境中。
由于我希望同时包含配置和转换的软件包,因此我将Build Action设置为Content这样:
<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>
该软件包正确完成并且也进行了部署(MyConfig.config的参数根据其运行的环境而有所更改)。 我的问题是在服务器计算机上也有MyConfig。*。config文件。
查看官方文档示例注释的(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/transforms-variable-substitution?view=vsts#xml-transformation-example)并不能使您清楚。只是“ msbuild会在打包之前先做,天青不行”,但是没有说明这样做的方法。
编辑:我使用的解决方案。
基本上,我无法避免保持工件整洁,因为它们不依赖于环境。因此,在所有版本发布管道之后,我添加了一个删除文件作业(https://docs.microsoft.com/en-us/vsts/pipelines/tasks/utility/delete-files?view=vsts),以删除具有以下参数的所有配置文件:
Source Folder: $(wwwRoot)\ Contents: **\*.Debug.config **\*.Release.config **\*.UAT.config **\*.PROD.config
答案 0 :(得分:0)
首先,通过XML文件转换,需要xx..config文件。 其次,当将Web应用发布到Web部署程序包或直接根据配置直接发布到服务器时(例如Release,Debug),将应用转换。
关于Web部署程序包,有xx.SetParameters.xml文件,其中包含相关的转换后的元素,该值将在部署期间应用。您可以在部署之前更新该文件。
Web.config Transformation Syntax for Web Project Deployment Using Visual Studio
更新:
您还可以将文件存储在Secure Files中,然后通过“复制文件”任务将文件复制到相关文件夹:
$(agent.builddirectory)\..\_temp
)答案 1 :(得分:0)
您可能需要考虑创建部署后脚本来清理这些文件,并将其添加到发布脚本中以在部署结束时运行。