You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8.0多项目解决方案:如何仅执行一次预构建dotnet format脚本

解决方案级单次执行dotnet format的实现方法

要解决Directory.Build.props中脚本被每个项目重复执行的问题,核心是通过MSBuild的内置属性和自定义标记,限定Target仅在解决方案构建的初始化阶段执行一次,具体实现如下:

具体配置代码

在你的Directory.Build.props文件中添加以下Target节点:

<Target Name="RunDotNetFormatOnce" BeforeTargets="Build" 
        Condition="'$(BuildingSolution)' == 'true' And '$(DotNetFormatExecuted)' != 'true'">
  <Exec Command="dotnet format" />
  <PropertyGroup>
    <DotNetFormatExecuted>true</DotNetFormatExecuted>
  </PropertyGroup>
</Target>

关键逻辑说明

  • BuildingSolution属性:MSBuild在执行解决方案级构建时会自动将该属性设为true,单个项目构建时为false,这是区分方案级和项目级构建的核心标记。
  • 自定义DotNetFormatExecuted属性:首次执行后将其设为true,即使后续有其他触发逻辑,也会通过Condition判断跳过重复执行。
  • BeforeTargets="Build":确保脚本在所有项目构建开始前执行。

注意事项

  • 如果需要指定特定的格式规则文件或解决方案路径,可以修改dotnet format命令,比如dotnet format $(SolutionDir)/YourSolution.sln --config .editorconfig。
  • 若你的构建流程有特殊的前置Target,可根据实际需求调整BeforeTargets的值,比如改为BeforeTargets="Restore"。

内容的提问来源于stack exchange,提问作者Sophie cai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:35:57