다음을 통해 공유


아티팩트 출력 레이아웃

.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

예제

다음 표에서는 생성될 수 있는 경로의 예를 보여 줍니다.

Path 설명
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(이)가 만들어지는 폴더입니다.

구성 방법

중앙 집중식 출력 경로 형식을 옵트인하려면 Directory.Build.props 파일에 다음 MSBuild 속성 중 하나를 추가합니다.

  • 기본 출력 위치를 사용하려면 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>
    

"피벗" 폴더 이름은 기본적으로 TFM(대상 프레임워크 모니커), 구성 및 RID(런타임 식별자)의 조합으로 설정됩니다. 존재하지 않는 모든 항목은 생략됩니다. "피벗" 폴더의 이름을 지정하는 방법을 사용자 지정하려면 ArtifactsPivots MSBuild 속성을 원하는 문자열로 설정합니다. 예시:

<PropertyGroup>
  ...
  <ArtifactsPivots>$(ArtifactsPivots)_MyCustomPivot</ArtifactsPivots>
</PropertyGroup>