SuperAPI AI 工具集

dotnet-artifacts-output

编程与开发

查看项目

更新于 10-16 01:28

技能介绍

用途:.NET SDK 的 artifacts 输出布局把分散在源码树中各项目的构建输出(bin/、obj/、publish/、package/)统一集中到仓库根目录的 artifacts/ 目录,便于忽略与清理。该功能自 .NET 8 起为可选启用;新项目可用,旧项目迁移前应评估取舍。使用前需先确认 SDK 为 .NET 8 及以上。

主要能力与结构:输出按“输出类型/项目名/pivot”三级组织。bin/ 存放编译程序集与依赖,obj/ 存放中间文件与生成代码,publish/ 存放发布输出,package/ 存放 NuGet 包(.nupkg、.snupkg,此目录不含项目名子目录)。pivot 由配置、TFM、RID 用下划线连接,缺失项省略,且配置名小写,例如 debug、debug_net10.0、release_linux-x64;单目标项目的 pivot 仅含配置。

启用方式:在仓库根目录 Directory.Build.props 中加入 UseArtifactsOutput 设为 true;或运行 dotnet new buildprops --use-artifacts 生成预配置文件,其设置 ArtifactsPath 为 $(MSBuildThisFileDirectory)artifacts。直接设置 ArtifactsPath 等价于启用并可自定义根目录;可用 ArtifactsPivots 定制 pivot 子目录名。

配套调整:.gitignore 可用一行 artifacts/ 替代逐项目的 [Bb]in/ 与 [Oo]bj/(自定义路径需同步修改)。Dockerfile 中 COPY --from=build 路径需改为如 /app/artifacts/publish/MyApp/release/,注意输出位于 artifacts/publish/、项目名为子目录、配置小写、单目标省略 TFM。CI 上传路径也需更新,如 artifacts/publish/MyApp/release/ 与 artifacts/package/release/*.nupkg。迁移清单包括:添加属性、更新 .gitignore、更新 Dockerfile、更新 CI 与本地脚本、删除旧 bin/obj、验证 build/publish/test。

限制与注意事项:不要为单目标项目硬编码 TFM;路径配置名用小写;artifacts/package/ 无项目名层级;启用前先更新 Dockerfile 与 CI,否则会破坏 COPY 与上传步骤;该布局并非 .NET 默认,仍为可选。其他平台与工具的兼容细节资料未提供。