Msbuild CSPROJJ文件中的多用途任务

Msbuild CSPROJJ文件中的多用途任务,msbuild,csproj,msbuild-task,Msbuild,Csproj,Msbuild Task,我有两个要按环境配置的文件:App.config和ApplicationInsights.config。我已经创建了文件App.Debug.config和ApplicationINsights.Debug.config,并将以下任务添加到csproj文件中: <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersi

我有两个要按环境配置的文件:App.config和ApplicationInsights.config。我已经创建了文件
App.Debug.config
ApplicationINsights.Debug.config
,并将以下任务添加到csproj文件中:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
  <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
  <ItemGroup>
    <AppConfigWithTargetPath Remove="app.config" />
    <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
      <TargetPath>$(TargetFileName).config</TargetPath>
    </AppConfigWithTargetPath>
  </ItemGroup>
</Target>
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('ApplicationInsights.$(Configuration).config')">
  <Message Text="Transforming app insights config file to $(OutputPath)\ApplicationInsights.config" Importance="high" />
  <TransformXml Source="ApplicationInsights.config" Transform="ApplicationInsights.$(Configuration).config" Destination="$(OutputPath)\ApplicationInsights.config" />
</Target>

$(TargetFileName).config

当这两个任务是文件中的唯一任务时,它们都可以工作,但当这两个任务都包含时,只执行第二个转换。我试着给这些任务起不同的名字,但没有用。如何让这两个任务都运行?

您必须为这两个任务指定不同的名称,然后在编译后挂接到现有的
目标:

<Target Name="SomeUniqueName1" AfterTargets="AfterCompile" …>
  …
</Target>
<Target Name="SomeUniqueName2" AfterTargets="AfterCompile" …>
  …
</Target>

…
…

只需存在一次即可定义导入的
TransformXml
任务。

您必须为这两个任务指定不同的名称,然后在编译后连接到现有的
目标:

<Target Name="SomeUniqueName1" AfterTargets="AfterCompile" …>
  …
</Target>
<Target Name="SomeUniqueName2" AfterTargets="AfterCompile" …>
  …
</Target>

…
…
只需存在一次即可定义导入的
TransformXml
任务