【问题标题】:How to execute msbuild /t:updateuid for all projects in a solution?如何为解决方案中的所有项目执行 msbuild /t:updateuid?
【发布时间】:2016-08-29 16:55:40
【问题描述】:

是否有一种简单的方法可以为解决方案中的所有项目执行msbuild /t:updateuid <project file>?

我有一个包含 150 多个项目的庞大解决方案,并希望将 Uid 设置为解决方案中所有项目中的所有 *.xaml 文件。我不想将这一行添加到每个项目中,而是从一个地方执行它。因此,我可以轻松控制命令的执行。 例如,在开发阶段,我想禁用该命令以加快构建过程,而在测试阶段之前,我想从一个地方启用它。欢迎提出任何建议。

问候

【问题讨论】:

    标签: c# wpf build localization msbuild


    【解决方案1】:

    我设法使用this 博客上的信息解决了我的问题。 这个想法是注入一个自定义的.targets 文件,该文件将由 msbuild 为每个项目处理。假设我们有以下解决方案结构:

    • 解决方案文件夹
      • MySolution.sln
      • after.MySolution.sln.targets
      • UpdateAutomationIds.targets

    after.MySolution.sln.targets 文件将由 msbuild 处理。它将注入我们的UpdateAutomationIds.targets 文件,以便为解决方案中的每个项目执行。只需将 MySolution 替换为您的解决方案名称即可。

    after.MySolution.sln.targets

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <CustomAfterMicrosoftCommonTargets>$(MSBuildThisFileFullPath)</CustomAfterMicrosoftCommonTargets>
        <SolutionPath>$(SolutionPath);CustomAfterMicrosoftCommonTargets=$(MSBuildThisFileDirectory)UpdateAutomationIds.targets</SolutionPath>
      </PropertyGroup>
    </Project>
    

    UpdateAutomationIds.targets

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <Target Name="UpdateAutomationIds" Condition="'$(MSBuildProjectExtension)'=='.csproj'" BeforeTargets="Build">
        <Message Text="Updates automation ids. Project: $(MSBuildProjectFullPath)" Importance="high"/>
        <Exec Command="&quot;$(MSBuildToolsPath)\msbuild.exe&quot; /t:updateuid &quot;$(MSBuildProjectFullPath)&quot;"/>
        <Exec Command="&quot;$(MSBuildToolsPath)\msbuild.exe&quot; /t:checkuid &quot;$(MSBuildProjectFullPath)&quot;"/>
      </Target>
    </Project>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多