用途:这是 .NET SDK artifacts 输出布局的参考指南。该布局把构建输出(bin/、obj/、publish/、package/)集中到仓库根目录的单个 artifacts/ 目录,自 .NET 8 起作为可选功能提供,推荐用于新项目,迁移现有项目前需评估取舍。使用前先确认 .NET 8+ SDK,早期版本不支持。
主要能力:支持 UseArtifactsOutput 启用与 ArtifactsPath 配置;集中输出结构为 artifacts/bin/、artifacts/obj/、artifacts/publish/、artifacts/package/;pivot 子目录由配置、TFM、RID 用下划线连接,缺失项省略,如 debug、debug_net10.0、release_linux-x64;package 输出不含项目名子目录。
使用方式:在根目录 Directory.Build.props 中加入 <UseArtifactsOutput>true</UseArtifactsOutput>,或用 dotnet new buildprops --use-artifacts 生成预配置文件。设置 ArtifactsPath 等价于启用并自定义根目录,例如 <ArtifactsPath>$(MSBuildThisFileDirectory).output</ArtifactsPath>;可用 ArtifactsPivots 自定义 pivot。.gitignore 可简化为一行 artifacts/。
适用场景:新项目、希望简化清理与忽略规则、需要可预测输出路径的构建。
限制与注意:会破坏既有路径假设,Dockerfile 的 COPY --from=build 与 CI 上传路径需同步更新;部分旧工具可能无法解析新路径;单目标项目 pivot 不含 TFM,配置名小写;不要将其视为默认布局,它始终是可选功能。迁移需更新 .gitignore、Dockerfile、CI、脚本并清理旧 bin/obj。