项目输出布局
在 .NET 8 及更高版本中,可以选择简化生成输出的输出路径和文件夹结构。 所有项目中的所有生成输出会收集到一个公共位置,并按项目分隔。 使用通用位置,可以轻松使用工具预测在何处查找输出。
默认情况下,公共位置是 Directory.build.props 文件旁边一个名为项目的目录。 根项目文件夹下的文件夹结构如下所示:
📁 artifacts
└──📂 <Type of output>
└──📂 <Project name>
└──📂 <Pivot>
下表显示了文件夹结构中每个级别的默认值。 可以使用 Directory.build.props 文件中的属性替代值和默认位置。
文件夹级别 | 说明 | 示例 |
---|---|---|
输出类型 | 生成输出的类别,例如二进制文件、中间/生成的文件、已发布的应用程序和 NuGet 包。 | bin , obj , publish , package |
项目名称 | 按每个项目分隔输出。 | MyApp |
透视 | 区分不同配置、目标框架和运行时标识符的项目生成。 如果需要多个元素,元素会用下划线 (_ ) 联接。 可以使用 ArtifactsPivots MSBuild 属性自定义。 |
debug , debug_net8.0 , release , release_linux-x64 |
示例
下表显示了可能创建的路径示例。
路径 | 说明 |
---|---|
artifacts\bin\MyApp\debug | 运行 dotnet build 时简单项目的生成输出路径。 |
artifacts\obj\MyApp\debug | 运行 dotnet build 时简单项目的中间输出路径。 |
artifacts\bin\MyApp\debug_net8.0 | 多目标项目 net8.0 生成的生成输出路径。 |
artifacts\publish\MyApp\release_linux-x64 | 发布 linux-x64 时简单应用的发布路径。 |
artifacts\package\MyApp\release | 为项目创建发布 .nupkg 的文件夹。 |
配置方式
若要选择集中式输出路径格式,请将以下 MSBuild 属性之一添加到 Directory.Build.props 文件:
要使用默认输出位置,请将
UseArtifactsOutput
属性设置为true
。<PropertyGroup> <UseArtifactsOutput>true</UseArtifactsOutput> </PropertyGroup>
要设置自定义输出位置,请添加值为
$(MSBuildThisFileDirectory)artifacts
的ArtifactsPath
属性(或所需的任何文件夹位置)。 如果还没有 Directory.Build.props 文件,可以运行以下命令来自动生成包含ArtifactsPath
属性的文件:dotnet new buildprops --use-artifacts
生成的文件外观如下所示:
<Project> <PropertyGroup> <ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath> </PropertyGroup> </Project>
“pivot”文件夹名称默认为目标框架名字对象 (TFM)、配置和运行时标识符 (RID) 的组合。 省略任何不存在的项。 要自定义“pivot”文件夹的命名方式,请将 ArtifactsPivots
MSBuild 属性设置为所需的字符串。 例如:
<PropertyGroup>
...
<ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>