빌드 출력 디렉터리 변경
구성별로(디버그, 릴리스 또는 둘 다의 경우) 프로젝트에서 생성된 출력의 위치를 지정할 수 있습니다. 기본 설정을 사용하면 출력 폴더는 프로젝트 유형 및 SDK에 따라 다르며 일부 프로젝트는 플랫폼별 또는 프레임워크별 하위 폴더를 사용합니다.
Visual Studio는 프로젝트 폴더를 기준으로 경로를 지정하거나 파일 시스템의 어느 곳에나 절대 경로를 지정하여 사용자 지정 폴더에 중간 및 최종 출력을 배치할 수 있는 속성을 제공합니다. Visual Studio 프로젝트 속성에 지정한 설정 외에도 프로젝트 파일을 편집하고 MSBuild 및 .NET SDK 기능을 사용하여 개별 프로젝트 또는 여러 프로젝트의 솔루션 수준에서 프로젝트 출력의 모든 측면을 완벽하게 제어하여 출력을 추가로 사용자 지정할 수도 있습니다.
빌드 출력 디렉터리 변경
프로젝트 또는 솔루션을 정리하여 기존 출력 파일(Build>Clean 솔루션)을 제거합니다.
프로젝트의 속성 페이지를 열려면 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성 선택합니다.
프로젝트 유형에 따라 적절한 탭을 선택합니다.
- C#의 경우 빌드 탭을 선택합니다.
- Visual Basic의 경우 컴파일 탭을 선택합니다.
- C++ 또는 JavaScript의 경우 일반 탭을 선택합니다.
위쪽의 구성 드롭다운에서 변경하려는 출력 파일 위치(디버그, 릴리스또는 모든 구성 )를 선택합니다.
페이지에서 출력 경로 항목을 찾습니다. 프로젝트 유형에 따라 다릅니다.
- C# 및 JavaScript 프로젝트에 대한 출력 경로
- Visual Basic 프로젝트를 위한 빌드 출력 경로 지정
- Visual C++ 프로젝트용 출력 디렉터리
경로를 입력하여 출력을 생성할 경로를 지정하거나(절대 경로 또는 루트 프로젝트 디렉터리를 기준), 탐색하기를 선택하여 해당 폴더를 탐색합니다.
Visual Studio C# 프로젝트
메모
일부 프로젝트(.NET 및 ASP.NET Core)는 기본적으로 빌드 경로에 프레임워크 버전 또는 런타임 식별자를 포함합니다. 이를 변경하려면 솔루션 탐색기프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 파일 편집을 선택하고 다음을 추가합니다.
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
팁
출력이 지정한 위치에 생성되지 않는 경우 Visual Studio의 메뉴 모음에서 선택하여 해당 구성(예: 디버그 또는 릴리스)을 빌드하고 있는지 확인합니다.
일반 출력 디렉터리에 빌드
기본적으로 Visual Studio는 솔루션 내의 자체 폴더에 있는 솔루션의 각 프로젝트를 빌드합니다. 프로젝트의 빌드 출력 경로를 변경하여 모든 출력을 동일한 폴더에 배치하도록 할 수 있습니다.
모든 솔루션 출력을 공통 디렉터리에 배치하려면
솔루션을 정리하여 기존 출력 파일(Build>Clean 솔루션)을 제거합니다.
솔루션에서 하나의 프로젝트를 클릭합니다.
프로젝트 메뉴에서 속성클릭합니다.
각 프로젝트에서 형식에 따라 컴파일 또는 빌드을 선택하고, 솔루션의 모든 프로젝트에 사용할 폴더로 출력 경로 또는 기본 출력 경로을 설정합니다.
프로젝트의 프로젝트 파일을 열고 첫 번째 속성 그룹에 다음 속성 선언을 추가합니다.
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
UseCommonOutputDirectory
에서true
로 설정하는 것은 Visual Studio와 그 기반 빌드 엔진(MSBuild)에 여러 프로젝트 출력을 동일한 폴더에 배치하고 있음을 알립니다. 이에 따라 MSBuild는 프로젝트가 다른 프로젝트에 의존할 때 일반적으로 발생하는 복사 단계를 생략합니다.솔루션의 모든 프로젝트에 대해 2-5단계를 반복합니다. 일반적인 출력 디렉터리를 사용하지 않아야 하는 몇 가지 예외적 프로젝트가 있는 경우 일부 프로젝트를 건너뛸 수 있습니다.
프로젝트에 대한 중간 출력 디렉터리를 설정하려면(.NET 프로젝트)
프로젝트를 정리하여 기존 출력 파일을 제거합니다.
프로젝트 파일을 엽니다.
첫 번째 속성 그룹에 다음 속성 선언을 추가합니다.
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
경로는 프로젝트 파일을 기준으로 하거나 절대 경로를 사용할 수 있습니다. 경로에 프로젝트 이름을 넣으려면 MSBuild 속성
$(MSBuildProjectName)
,$(MSBuildProjectDirectory)
사용하여 참조할 수 있습니다. 더 많은 속성을 사용하려면, MSBuild 예약 및 잘 알려진 속성 을 참조하세요.Visual Studio는 빌드할 때 프로젝트 폴더 아래에 obj 폴더를 계속 만들지만 비어 있습니다. 빌드 프로세스의 일부로 삭제할 수 있습니다. 이렇게 하는 한 가지 방법은 빌드 후 이벤트를 추가하여 다음 명령을 실행하는 것입니다.
rd "$(ProjectDir)obj" /s /q
사용자 지정 빌드 이벤트지정을 참조하세요.
Visual Studio 2022에는 프로젝트 유형에 따라 다른 프로젝트 디자이너 사용자 인터페이스가 있습니다. .NET Framework 프로젝트는 레거시 .NET 프로젝트 디자이너를 사용하지만 .NET Core(및 .NET 5 이상) 프로젝트는 현재 .NET 프로젝트 디자이너를 사용합니다. C++ 프로젝트는 고유한 속성 페이지 사용자 인터페이스를 사용합니다. 이 섹션의 단계는 사용 중인 프로젝트 디자이너에 따라 달라집니다.
빌드 출력 디렉터리 변경
이 절차는 .NET Core 또는 .NET 5 이상을 대상으로 하는 Visual Studio 2022의 프로젝트에 적용됩니다.
프로젝트 또는 솔루션을 정리하여 기존 출력 파일(Build>Clean 솔루션)을 제거합니다.
솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성선택합니다.
C# 프로젝트의 경우 빌드 섹션을 확장하고 출력 하위 섹션까지 아래로 스크롤합니다. Visual Basic의 경우 컴파일 섹션을 확장하고 일반찾습니다.
기본 출력 경로를 찾아 출력을 생성할 경로를 입력하거나 (루트 프로젝트 디렉터리에 대한 절대 경로 또는 상대 경로로), 또는 해당 폴더를 찾기 위해 찾아보기 를 선택합니다. 구성 이름은 실제 출력 경로를 생성하기 위해 기본 출력 경로에 추가됩니다.
C#:
.NET Core C# 프로젝트의 출력 경로 속성을 보여 주는
Visual Basic:
.NET Core Visual Basic 프로젝트의 출력 경로 속성을 보여 주는
메모
일부 프로젝트(.NET 및 ASP.NET Core)는 기본적으로 최종 출력 경로에 프레임워크 버전 또는 런타임 식별자를 포함합니다. 이를 변경하려면 솔루션 탐색기프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 프로젝트 파일 편집을 선택하고 다음을 추가합니다.
<PropertyGroup> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath> </PropertyGroup>
일반 출력 디렉터리에 빌드
기본적으로 Visual Studio는 솔루션 내의 자체 폴더에 있는 솔루션의 각 프로젝트를 빌드합니다. 프로젝트의 빌드 출력 경로를 변경하여 모든 출력을 동일한 폴더에 배치하도록 할 수 있습니다.
솔루션을 정리하여 기존 출력 파일(Build>Clean 솔루션)을 제거합니다.
솔루션에서 하나의 프로젝트를 클릭합니다.
프로젝트 메뉴에서 속성클릭합니다.
각 프로젝트에서는 그 형식에 따라 컴파일 또는 빌드중 하나를 선택하고, 출력 경로 또는 기본 출력 경로를 솔루션의 모든 프로젝트가 사용할 폴더로 설정합니다.
프로젝트의 프로젝트 파일을 열고 첫 번째 속성 그룹에 다음 속성 선언을 추가합니다.
<PropertyGroup> <!-- existing property declarations are here --> <UseCommonOutputDirectory>true</UseCommonOutputDirectory> </PropertyGroup>
UseCommonOutputDirectory
을true
로 설정하면 Visual Studio와 기본 빌드 엔진(MSBuild)에 여러 프로젝트 출력을 동일한 폴더에 배치하고 있음을 알리며, 결과적으로 MSBuild는 프로젝트가 다른 프로젝트에 의존할 때 일반적으로 발생하는 복사 단계를 생략합니다.솔루션의 모든 프로젝트에 대해 2-5단계를 반복합니다. 일반적인 출력 디렉터리를 사용하지 않아야 하는 몇 가지 예외적 프로젝트가 있는 경우 일부 프로젝트를 건너뛸 수 있습니다.
팁
출력이 지정한 위치에 생성되지 않는 경우 Visual Studio의 메뉴 모음에서 선택하여 해당 구성(예: 디버그 또는 릴리스)을 빌드하고 있는지 확인합니다.
프로젝트의 중간 출력 디렉터리 설정
이 절차는 .NET Core 또는 .NET 5 이상을 대상으로 하는 Visual Studio 2022의 프로젝트에 적용됩니다.
프로젝트를 정리하여 기존 출력 파일을 제거합니다.
프로젝트 파일을 엽니다.
첫 번째 속성 그룹에 다음 속성 선언을 추가합니다.
<PropertyGroup> <!-- existing property declarations are here --> <IntermediateOutputPath>path</IntermediateOutputPath> </PropertyGroup>
경로는 프로젝트 파일을 기준으로 하거나 절대 경로를 사용할 수 있습니다. 경로에 프로젝트 이름을 넣으려면 MSBuild 속성
$(MSBuildProjectName)
,$(MSBuildProjectDirectory)
사용하여 참조할 수 있습니다. 사용할 수 있는 더 많은 속성은 MSBuild 예약 및 잘 알려진 속성 참조하세요.Visual Studio는 빌드할 때 프로젝트 폴더 아래에 obj 폴더를 계속 만들지만 비어 있습니다. 빌드 프로세스의 일부로 삭제할 수 있습니다. 이렇게 하는 한 가지 방법은 빌드 후 이벤트를 추가하여 다음 명령을 실행하는 것입니다.
rd "$(ProjectDir)obj" /s /q
사용자 지정 빌드 이벤트지정을 참조하세요.
Directory.Build.props를 사용하여 출력 디렉터리 설정
프로젝트가 많고 모두에 대한 출력 폴더를 변경하려는 경우 이 문서의 앞부분에서 설명한 방법을 사용하여 각 프로젝트를 변경하는 것이 지루하고 오류가 발생하기 쉽습니다. 이러한 경우 솔루션 폴더에 Directory.Build.props파일을 만들어 적절한 MSBuild 속성을 한 곳에서 설정하여 솔루션의 모든 프로젝트에 적용할 수 있습니다. 영향을 받을 모든 프로젝트의 부모 폴더에 이 특정 이름의 파일을 배치하면 한 곳에서 사용자 지정을 쉽게 유지하고 값을 쉽게 변경할 수 있습니다. 폴더에 의한 빌드 사용자 지정을참조하세요.
아티팩트를 사용하여 빌드 출력을 구성하기
.NET 8 프로젝트의 경우 아티팩트 기능을 사용하여 매우 사용자 지정 가능하고 유연한 방식으로 출력을 정렬할 수 있습니다. 아티팩트 출력 레이아웃을 참조하세요.