我在Azure Devops中建立了一个新的生成和部署管道。它是一个较旧的Web应用程序,其中包含一些用于web.config的转换文件。过去,我们会根据多少个环境来构建相同的代码x次。正如我从这里https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/transforms-variable-substitution?view=vsts#xmltransform
所读到的那样,这不再是必需的部署管道似乎可以从我的转换文件中获取更改。
但是问题是我的其他转换文件没有包含在软件包中,所以我得到了以下警告消息:
[warning]Unable to apply transformation for the given package. Verify the following.
[warning]1. Whether the Transformation is already applied for the MSBuild generated package during build. If yes, remove the <DependentUpon> tag for each config in the csproj file and rebuild.
[warning]2. Ensure that the config file and transformation files are present in the same folder inside the package.
是的,当我下载工件时,Web。[stage] .config文件不存在建议的
。在某些地方可以让我包含这些文件的设置吗?还是阻止他们转型?
答案 0 :(得分:1)
MSBuild根据以下设置/属性/参数(按顺序)知道如何transform the web.config文件
dotnet publish --configuration Release
dotnet publish --configuration Release /p:PublishProfile=FolderProfile
dotnet publish --configuration Release /p:EnvironmentName=Production
dotnet publish --configuration Release /p:CustomTransformFileName=custom.transform
我认为对于开发人员而言,仅基于构建配置来实现此目标很典型,并且我相信MSBuild(和dotnet)知道如何基于Web中的<DependentUpon>Web.config</DependentUpon>
元素来实现此目标。[configuration] .config项目或构建脚本文件中的项目。
Azure DevOps 发布管道 有些不同。 管道要在构建/发布项目后转换您的web.config,并且如果MSBuild(或dotnet)已经尝试过,则不知道该怎么做。因此:
[warning]无法对给定的包应用转换。验证以下内容。
[警告] 1。在构建过程中是否已将转换应用于MSBuild生成的程序包。如果是,请删除csproj文件中每个配置的标签并重新构建。
[警告] 2。确保配置文件和转换文件位于软件包内的同一文件夹中。
<DependentUpon>
标签
/p:TransformWebConfigEnabled=False
参数。 现在,您需要根据File Transforms and Value Substitutions文档来组织发布管道。
[节]开始:IIS Web App部署
====================================
任务:IIS Web App部署
描述:使用Web Deploy部署网站或Web应用程序
版本:0.0.51
作者:微软公司
帮助:More information
==================================== ...
[命令] C:... \ ctt \ ctt.exe s:C:... \ Web.config t:C:... \ Web.Release.config d:C:。 .. \ Web.config pw我
[命令] C:... \ ctt \ ctt.exe s:C:... \ Web.config t:C:... \ Web.Development.config d:C:... \ Web.config pw一世
XML转换成功应用
...
您的发行版应具有对工件的“访问”权限,作为工件的一部分,这将确保部署代理下载源(不希望使用的IMHO)。
您将需要将web。[stage] .config文件作为构建工件的一部分包含在复制任务中,或将其拾取的最小匹配项。
您可以使用XDT Transform任务执行转换操作。
选项2是我走过的路线。
这是该任务对我的外观的图像。
该任务将配置放入构建中的构件中,然后可以在发布管道中使用它,而无需重新构建xx次。