1

「ProjectID」という単一のキーをweb.configのappsettingセクションに追加することで正常に実行されるMsbuildターゲットがあります。同じ appsetting セクションにもう 1 つのキー '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] DEBUG EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 「値」を「4424cc12-4368-45ad-ad5b-19e821eb91d4」に置き換えました。 2019-06-25 08:37:13,203 [9] DEBUG EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 1 つの置換を作成. 2019-06-25 08:37:13,204 [9] DEBUG 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] DEBUG EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] - 0 個の置換を行いました。2019-06-25 08:37:13,204 [9] DEBUG EP.BuildService.Handlers.ProjectBuildLogger [2e0de09a-3fd8-4932-bc1d-e3a66dd3c1ca] -タスク "XmlPoke" の実行が完了しました。

私がこれまでに試したこと:

  1. 元々は PropertyGroup で ApplicationId 値を渡していました。役に立ちませんでした。
  2. したがって、コードに見られるように値をハードコーディングしても、 Value="SetAValue" はまだ appsetting にキーを追加していません。
4

1 に答える 1