csprojfile 中的多个使用任务



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

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)MicrosoftVisualStudiov$(VisualStudioVersion)WebMicrosoft.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)MicrosoftVisualStudiov$(VisualStudioVersion)WebMicrosoft.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>

当这两个任务都是文件中的唯一任务时,它们都有效,但是当两者都包含时,只会执行第二个转换。我尝试给任务不同的名称,但无济于事。如何操作才能运行这两个任务?

您必须

为两个任务指定不同的名称,然后挂接到现有的AfterCompile目标:

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

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

相关内容

  • 没有找到相关文章

最新更新