在我的项目中,有一个 Webservice.settings 包含 3 个变量。 () 我打算使用我的 release-pipeline (Azure DevOps) 设置这些变量。因此,我在 DevOps 中创建了一个变量组,其中包含我想要设置的变量和值。 () 变量组链接到管道,其范围设置为“release”。
为了设置变量,发布管道包含一个file-transform-task。 (
管道运行后,.exe.config如下所示:
<applicationSettings>
<MyFancyProgram.App.Properties.Webservice>
<setting name="UrlEndpoint" serializeAs="String">
</value>
</setting>
<setting name="LoginName" serializeAs="String">
</value>
</setting>
<setting name="LoginPasswort" serializeAs="String">
</value>
</setting>
</MyFancyProgram.App.Properties.Webservice>
</applicationSettings>
变量尚未设置。
我的期望是,.exe.config应该看起来像这样:
<applicationSettings>
<MyFancyProgram.App.Properties.Webservice>
<setting name="UrlEndpoint" serializeAs="String">
<value>NoUrlEndpointNameSet</value>
</setting>
<setting name="LoginName" serializeAs="String">
<value>NoLoginNameSet</value>
</setting>
<setting name="LoginPasswort" serializeAs="String">
<value>NoLoginPasswortSet</value>
</setting>
</MyFancyProgram.App.Properties.Webservice>
</applicationSettings>
我尝试过的:我假设我错误地解决了变量组内的命名空间。所以在变量组内,我尝试了不同的选项,例如:
https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/file-transform-v1?view=azure-pipelines https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/file-transform-v2?view=azure-pipelines
经过一番尝试和错误,咖啡和轻微的头痛,我发现了问题并解决了它。
我在 Webservice.settings 中添加了一些默认值 ()
这导致我的 .exe.config 中的结构略有不同:
<MyFancyProgram.App.Properties.Webservice>
<setting name="UrlEndpoint" serializeAs="String">
<value>someValue</value>
</setting>
<setting name="LoginName" serializeAs="String">
<value>defaultPlaceholderLoginName</value>
</setting>
<setting name="LoginPasswort" serializeAs="String">
<value>defaultPlaceholderLoginPasswort</value>
</setting>
</MyFancyProgram.App.Properties.Webservice>
这里重要的部分是,对于每个变量值现在都有一个开始和结束标签。
<value>someValue</value>
之前只有“二合一”标签。
<value/>
看起来文件转换任务仅在开始和结束值标签内执行其变量替换,而不是在“二合一”值标签内。
附录:作为默认值的空格不足以用开始和结束值标签对替换“二合一”值标签。