다음을 통해 공유


일반적인 MSBuild 프로젝트 항목

MSBuild에서 항목은 파일 이름과 같은 하나 이상의 문자열에 대한 명명된 참조입니다. 항목에는 파일 이름, 경로 및 버전 번호와 같은 메타데이터가 포함됩니다. Visual Studio의 모든 프로젝트 형식에는 여러 항목의 공통점이 있습니다. 이러한 항목은 Microsoft.Build.CommonTypes.xsd 파일에 정의됩니다.

이 문서에서는 MSBuild 자체에 정의된 모든 일반적인 프로젝트 항목을 나열합니다. .NET SDK에서 제공하는 항목 및 속성은 Microsoft.Net.Sdk에 대한 MSBuild 참조에 설명되어 있습니다.

Reference

프로젝트의 .NET 어셈블리(관리되는) 참조를 나타냅니다.

항목 메타데이터 이름 묘사
HintPath 선택적 문자열입니다. 어셈블리의 상대 또는 절대 경로입니다.
이름 선택적 문자열입니다. 어셈블리의 표시 이름(예: "System.Windows.Forms")입니다.
FusionName 선택적 문자열입니다. 항목의 단순하거나 강력한 Fusion 이름을 지정합니다.

이 특성이 있으면 어셈블리 파일을 열어 Fusion 이름을 가져올 필요가 없으므로 시간을 절약할 수 있습니다.
SpecificVersion 선택적 부울입니다. Fusion 이름의 버전만 참조해야 하는지 여부를 지정합니다.
별칭 선택적 문자열입니다. 참조에 대한 모든 별칭입니다.
민간의 선택적 부울입니다. 참조를 출력 폴더에 복사할지 여부를 지정합니다. 이 특성은 Visual Studio IDE에 있는 참조의 로컬 복사 속성과 일치합니다.

메모

항목 형식을 사용하여 네이 Reference 티브 COM 개체에 대해 미리 생성된 래퍼 어셈블리를 참조할 수도 있습니다(예: PIA(기본 Interop 어셈블리)를 생성하는 데 사용한 tlbimp.exe 경우). 이 유형의 참조는 MSBuild가 실행되는 빌드 머신의 시스템 레지스트리 상태에 종속성을 도입하는 빌드 시 COM 래퍼를 생성하는 MSBuild 알고리즘을 사용하는 대신 알려진 입력으로 COM 래퍼 어셈블리를 직접 미리 생성하려는 경우에 적합합니다.

COMReference

프로젝트의 COM(관리되지 않는) 구성 요소 참조를 나타냅니다. 이 항목은 래퍼 어셈블리를 생성하거나 사용되는 경우 어셈블리에 interop 형식을 포함하는 EmbedInteropTypes에서 사용됩니다. 이 유형의 참조를 사용하면 참조된 COM 개체를 조회하는 데 사용되는 빌드 머신의 시스템 레지스트리에 대한 종속성이 도입됩니다. 컴퓨터에서 제품을 설치, 업데이트 또는 제거할 때(또는 다른 컴퓨터에서 동일한 빌드를 실행할 때) 레지스트리의 COM 아티팩트 및 COM 항목이 변경될 수 있으며, 빌드 논리가 변경되지 않은 경우에도 다른 래퍼 어셈블리가 생성될 수 있습니다.

이 항목은 non-.NET 프로젝트에 적용되지 않습니다.

항목 메타데이터 이름 묘사
이름 선택적 문자열입니다. 구성 요소의 표시 이름입니다.
Guid(Guid) 필수 문자열입니다. 구성 요소의 GUID({12345678-1234-1234-1234-123456781234}형식)입니다.
VersionMajor 필수 문자열입니다. 구성 요소 버전 번호의 주요 부분입니다. 예를 들어 전체 버전 번호가 "5.46"이면 "5"입니다.
VersionMinor 필수 문자열입니다. 구성 요소 버전 번호의 부 부분입니다. 예를 들어 전체 버전 번호가 "5.46"인 경우 "46"입니다.
EmbedInteropTypes 선택적 부울입니다. true이면 interop DLL을 생성하지 않고 이 참조의 interop 형식을 어셈블리에 직접 포함합니다.
Lcid 선택적 문자열입니다. 구성 요소의 LocaleID입니다.
WrapperTool 선택적 문자열입니다. 구성 요소에 사용되는 래퍼 도구의 이름입니다. 값은 다음과 같습니다.

1. 기본
2. tlbimp
3. primaryortlbimp
4. aximp
격리 선택적 부울입니다. 구성 요소가 reg-free 구성 요소인지 여부를 지정합니다.

COMFileReference

시스템 레지스트리를 사용하는 대신 파일 경로로 참조할 형식 라이브러리 목록을 나타냅니다. 빌드를 실행하는 계정에 빌드 서버에서 레지스트리를 편집할 수 있는 상승된 권한이 없거나 빌드가 레지스트리 상태에 대한 종속성을 갖지 않기 때문에 빌드 컴퓨터의 레지스트리에 대한 종속성을 방지하려는 경우 이 유형의 참조를 COMReference 대신 사용할 수 있습니다. 시스템 경로에서 아티팩트를 참조하는 데 사용하는 COMFileReference 경우 빌드는 시스템 상태에 대한 종속성을 갖습니다. 제품 설치, 업데이트 또는 제거(또는 다른 컴퓨터에서 동일한 빌드를 실행하는 경우)와 같이 시스템 상태의 변경으로 인해 시스템 아티팩트가 변경되는 경우 빌드 논리가 변경되지 않은 경우에도 래퍼 어셈블리가 변경될 수 있습니다. 일관된 빌드 결과를 보장하기 위해 프로젝트 또는 솔루션 폴더 아래와 같이 제어하는 위치에 COM 아티팩트 알려진 복사본을 캐시하고 시스템 아티팩트 대신 참조할 수 있습니다.

이 항목은 non-.NET 프로젝트에 적용되지 않습니다.

항목 메타데이터 이름 묘사
EmbedInteropTypes 선택적 부울입니다. true이면 interop DLL을 생성하지 않고 이 참조의 interop 형식을 어셈블리에 직접 포함합니다.
WrapperTool 선택적 문자열입니다. 구성 요소에 사용되는 래퍼 도구의 이름입니다. 값은 다음과 같습니다.

1. 기본
2. tlbimp
3. primaryortlbimp
4. aximp

NativeReference

네이티브 매니페스트 파일 또는 이러한 파일에 대한 참조를 나타냅니다.

항목 메타데이터 이름 묘사
이름 필수 문자열입니다. 매니페스트 파일의 기본 이름입니다.
HintPath 필수 문자열입니다. 매니페스트 파일의 상대 경로입니다.

프로젝트 참조

다른 프로젝트에 대한 참조를 나타냅니다. ProjectReference 항목은 대상에 의해 ResolveProjectReferences 항목으로 변환되므로 변환 프로세스가 덮어쓰지 않는 경우 ProjectReference참조의 유효한 메타데이터가 유효할 수 있습니다.

항목 메타데이터 이름 묘사
이름 선택적 문자열입니다. 참조의 표시 이름입니다.
GlobalPropertiesToRemove 선택적 string[]. 참조된 프로젝트를 빌드할 때 제거할 속성의 이름입니다(예: RuntimeIdentifier;PackOnBuild). 기본값은 비어 있습니다.
프로젝트 선택적 문자열입니다. {12345678-1234-1234-1234-123456781234}형식의 참조에 대한 GUID입니다.
OutputItemType 선택적 문자열입니다. 대상 출력을 내보낸 항목 유형입니다. 기본값은 비어 있습니다. 참조 메타데이터가 "true"(기본값)로 설정된 경우 대상 출력은 컴파일러에 대한 참조가 됩니다.
ReferenceOutputAssembly 선택적 부울입니다. 로 false설정하면 참조된 프로젝트의 출력을 이 프로젝트의 참조 로 포함하지 않지만 다른 프로젝트가 이 프로젝트 앞에 빌드되도록 합니다. 기본값은 true.
민간의 선택적 부울입니다. 참조를 출력 폴더에 복사할지 여부를 지정합니다. 이 특성은 Visual Studio IDE에 있는 참조의 로컬 복사 속성과 일치합니다.
SetConfiguration 선택적 문자열입니다. 참조된 프로젝트의 전역 속성 Configuration 설정합니다(예: Configuration=Release).
SetPlatform 선택적 문자열입니다. 참조된 프로젝트의 전역 속성 Platform 설정합니다(예: Platform=AnyCPU).
SetTargetFramework 선택적 문자열입니다. 참조된 프로젝트의 전역 속성 TargetFramework 설정합니다(예: TargetFramework=netstandard2.0).
SkipGetTargetFrameworkProperties 선택적 부울입니다. true경우 가장 호환되는 TargetFramework 값을 협상하지 않고 참조된 프로젝트를 빌드합니다. 기본값은 false.
대상 선택적 string[]. 빌드해야 하는 참조된 프로젝트에서 세미콜론으로 구분된 대상 목록입니다. 기본값은 $(ProjectReferenceBuildTargets)값이며, 기본값은 기본 대상을 나타내는 빈 값입니다. MSBuild.exe 또는 dotnet build아니라 Visual Studio에서 빌드할 때 이를 지정해도 Visual Studio에서 참조된 프로젝트의 기본 대상을 빌드할 수 없습니다.

메모

.NET Framework와 .NET Core(.NET 5 이상 포함) 간에 프로젝트 참조가 작동하는 방식에는 차이가 있습니다. .NET Framework 프로젝트에서 프로젝트 참조는 전이적이지 않습니다. 즉, Project1이 Project2를 참조하고 Project2가 Project3을 참조하는 경우 Project1에서 Project3에 대해 코딩할 수 없습니다. 그러나 .NET Core(.NET 5 이상 포함)에서는 프로젝트 참조 전이적입니다. Project1에서 Project3에 대해 코딩할 수 있습니다.

엮다

컴파일러의 원본 파일을 나타냅니다.

항목 메타데이터 이름 묘사
DependentUpon 선택적 문자열입니다. 이 파일이 올바르게 컴파일하기 위해 사용하는 파일을 지정합니다.
AutoGen 선택적 부울입니다. Visual Studio IDE(통합 개발 환경)에서 프로젝트에 대해 파일이 생성되었는지 여부를 나타냅니다.
링크 선택적 문자열입니다. 파일이 실제로 프로젝트 파일의 영향 외부에 있을 때 표시할 표기법 경로입니다.
보이는 선택적 부울입니다. Visual Studio의 솔루션 탐색기에 파일을 표시할지 여부를 나타냅니다.
CopyToOutputDirectory 선택적 문자열입니다. 파일을 출력 디렉터리에 복사할지 여부를 결정합니다. 값은 다음과 같습니다.

1. 절대 안 하세요
2. 항상
3. PreserveNewest
4. IfDifferent

EmbeddedResource

생성된 어셈블리에 포함할 리소스를 나타냅니다.

항목 메타데이터 이름 묘사
문화 선택적 문자열입니다. 리소스 파일의 문화권을 지정합니다. 지정된 경우 빌드 프로세스는 파일 확장명(빌드를 호스팅하는 컴퓨터의 .NET/OS에서 사용할 수 있는 문화권에 따라 다름)에 따라 문화권을 자동으로 유추하지 않습니다. Culture={culture identifier} 또는 WithCulture=false 메타데이터를 설정하는 것이 좋습니다.
WithCulture 선택적 부울입니다. 파일이 문화권 중립이고 AssignCulture 작업에 의한 문화권 검색을 건너뛰어야 임을 지정합니다. Culture={culture identifier} 또는 WithCulture=false 메타데이터를 설정하는 것이 좋습니다.
DependentUpon 선택적 문자열입니다. 이 파일이 올바르게 컴파일하기 위해 사용하는 파일을 지정합니다.
발생기 선택적 문자열입니다. 이 항목에서 실행되는 파일 생성기의 이름입니다.
LastGenOutput 선택적 문자열입니다. 이 항목에서 실행된 파일 생성기에서 만든 파일의 이름입니다.
CustomToolNamespace 선택적 문자열입니다. 이 항목에서 실행되는 모든 파일 생성기가 코드를 만들어야 하는 네임스페이스입니다.
링크 선택적 문자열입니다. 파일이 프로젝트의 영향을 받지 않는 경우 표기법 경로가 표시됩니다.
보이는 선택적 부울입니다. Visual Studio의 솔루션 탐색기에 파일을 표시할지 여부를 나타냅니다.
CopyToOutputDirectory 선택적 문자열입니다. 파일을 출력 디렉터리에 복사할지 여부를 결정합니다. 값은 다음과 같습니다.

1. 절대 안 하세요
2. 항상
3. PreserveNewest
4. IfDifferent
LogicalName 필수 문자열입니다. 포함된 리소스의 논리적 이름입니다.

콘텐츠

프로젝트로 컴파일되지 않지만 함께 포함되거나 게시될 수 있는 파일을 나타냅니다.

항목 메타데이터 이름 묘사
DependentUpon 선택적 문자열입니다. 이 파일이 올바르게 컴파일하기 위해 사용하는 파일을 지정합니다.
발생기 선택적 문자열입니다. 이 항목에서 실행되는 파일 생성기의 이름입니다.
LastGenOutput 선택적 문자열입니다. 이 항목에서 실행된 파일 생성기에서 만든 파일의 이름입니다.
CustomToolNamespace 선택적 문자열입니다. 이 항목에서 실행되는 모든 파일 생성기가 코드를 만들어야 하는 네임스페이스입니다.
링크 선택적 문자열입니다. 파일이 프로젝트의 영향을 받지 않는 경우 표시할 표기법 경로입니다.
PublishState 필수 문자열입니다. 콘텐츠의 게시 상태 중 하나:

-기본값
-포함
-제외
- DataFile
-전제 조건
IsAssembly 선택적 부울입니다. 파일이 어셈블리인지 여부를 지정합니다.
보이는 선택적 부울입니다. Visual Studio의 솔루션 탐색기에 파일을 표시할지 여부를 나타냅니다.
CopyToOutputDirectory 선택적 문자열입니다. 파일을 출력 디렉터리에 복사할지 여부를 결정합니다. 값은 다음과 같습니다.

1. 절대 안 하세요
2. 항상
3. PreserveNewest
4. IfDifferent
대상 경로 선택적 문자열입니다. 파일 이름을 포함하여 항목의 출력 경로(구성 및/또는 플랫폼별 출력 디렉터리를 기준으로)입니다. 제공된 경우 Link 메타데이터를 적용합니다. TargetPath가 제공되지 않으면 빌드 프로세스 중에 계산됩니다. AssignTargetPath 참조하세요.

없음

빌드 프로세스에서 역할이 없어야 하는 파일을 나타냅니다.

항목 메타데이터 이름 묘사
DependentUpon 선택적 문자열입니다. 이 파일이 올바르게 컴파일하기 위해 사용하는 파일을 지정합니다.
발생기 선택적 문자열입니다. 이 항목에서 실행되는 파일 생성기의 이름입니다.
LastGenOutput 선택적 문자열입니다. 이 항목에서 실행된 파일 생성기에서 만든 파일의 이름입니다.
CustomToolNamespace 선택적 문자열입니다. 이 항목에서 실행되는 모든 파일 생성기가 코드를 만들어야 하는 네임스페이스입니다.
링크 선택적 문자열입니다. 파일이 프로젝트의 영향을 받지 않는 경우 표시할 표기법 경로입니다.
보이는 선택적 부울입니다. Visual Studio의 솔루션 탐색기에 파일을 표시할지 여부를 나타냅니다.
CopyToOutputDirectory 선택적 문자열입니다. 파일을 출력 디렉터리에 복사할지 여부를 결정합니다. 값은 다음과 같습니다.

1. 절대 안 하세요
2. 항상
3. PreserveNewest
4. IfDifferent

어셈블리메타데이터

[AssemblyMetadata(key, value)]생성할 어셈블리 특성을 나타냅니다.

항목 메타데이터 이름 묘사
포함하다 AssemblyMetadataAttribute 특성 생성자의 첫 번째 매개 변수(키)가 됩니다.
필수 문자열입니다. AssemblyMetadataAttribute 특성 생성자의 두 번째 매개 변수(값)가 됩니다.

메모

이 항목은 .NET 5(및 .NET Core) 이상 버전용 SDK를 사용하는 프로젝트에 적용됩니다.

InternalsVisibleTo

[InternalsVisibleTo(..)] 어셈블리 특성으로 내보낸 어셈블리를 지정합니다.

항목 메타데이터 이름 묘사
포함하다 어셈블리 이름입니다.
열쇠 선택적 문자열입니다. 어셈블리의 공개 키입니다.

메모

이 항목은 .NET 5(및 .NET Core) 이상 버전용 SDK를 사용하는 프로젝트에 적용됩니다.

BaseApplicationManifest

빌드의 기본 애플리케이션 매니페스트를 나타내며 ClickOnce 배포 보안 정보를 포함합니다.

CodeAnalysisImport

가져올 FxCop 프로젝트를 나타냅니다.

수입

Visual Basic 컴파일러에서 네임스페이스를 가져와야 하는 어셈블리를 나타냅니다.

폴더

이 요소는 Visual Studio에서 빈 폴더의 자리 표시자로만 사용됩니다. 폴더가 채워지면 다른 요소로 대체됩니다.

참고 항목

  • 일반적인 MSBuild 프로젝트 속성
  • 일반적인 MSBuild 항목 메타데이터