我有一个 Msbuild 目标,它通过将一个名为“ProjectID”的键添加到 web.config 的 appsetting 部分来成功执行。现在我通过向同一个 appsetting 部分再添加一个键“ApplicationId”来更改此目标的行为。日志显示 xmlpoke 对两者都执行。但只有 projectID 值被每次运行正确替换。
(摘自)PropertyGroup定义:
<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="15.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Needs to be set! -->
<ProjectID>4424cc12-4368-45ad-ad5b-19e821eb91d4</ProjectID>
</PropertyGroup>
目标代码:
<Target Name="UpdateConfigFilesInSolutionDir">
<ItemGroup>
<WebConfigFilesSolutionDir Include="$(SolutionDir)\**\*.config" />
</ItemGroup>
<Message Text="WebConfigFilesPath: %(WebConfigFilesSolutionDir.FullPath)"
Importance="high"></Message>
<XmlPoke XmlInputPath="%(WebConfigFilesSolutionDir.FullPath)"
Query="//appSettings/add[@key='ProjectID']/@value" Value="$(ProjectID)"
/>
<XmlPoke XmlInputPath="%(WebConfigFilesSolutionDir.FullPath)"
Query="//appSettings/add[@key='ApplicationId']/@value" Value="SetAValue"
/>
</Target>
观察到的输出日志:
使用程序集“Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的“XmlPoke”任务。2019-06-25 08:37:13,202 [9] 调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 任务“XmlPoke” 2019-06-25 08:37:13,203 [9]调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] -将“值”替换为“4424cc12-4368-45ad-ad5b-19e821eb91d4”。 2019-06-25 08:37:13,203 [9] 调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] -做了 1 个替换. 2019-06-25 08:37:13,204 [9] 调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 完成执行任务“XmlPoke”。2019-06-25 08:37:13,204 [9] 调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] -任务“XmlPoke” 2019-06-25 08:37:13,204 [9]调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 进行了0 次替换。2019-06-25 08:37:13,204 [9] 调试 EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] -完成执行任务“XmlPoke”。
到目前为止我已经尝试过:
- 最初是在 PropertyGroup 中传递 ApplicationId 值。它没有帮助。
- 所以硬编码代码中看到的值,Value="SetAValue" 仍然没有将密钥添加到 appsetting。