Visual Studio 통합(MSBuild)Visual Studio Integration (MSBuild)

Visual Studio는 MSBuildMSBuild 를 호스팅하여 관리되는 프로젝트를 로드하고 빌드합니다.Visual Studio hosts MSBuildMSBuild to load and build managed projects. MSBuildMSBuild 에서 프로젝트를 관리하므로 프로젝트가 다른 도구에서 작성되어 사용자 지정된 빌드 프로세스를 가지더라도 MSBuildMSBuild 형식의 프로젝트는 대부분 Visual StudioVisual Studio에서 사용될 수 있습니다.Because MSBuildMSBuild is responsible for the project, almost any project in the MSBuildMSBuild format can be successfully used in Visual StudioVisual Studio, even if the project was authored by a different tool and has a customized build process.

이 항목에서는 Visual StudioVisual StudioMSBuildMSBuild 호스팅 중 Visual StudioVisual Studio에서 로드하고 빌드할 프로젝트와 .targets 파일을 사용자 지정할 때 고려해야 하는 부분을 설명합니다.This topic describes specific aspects of Visual StudioVisual Studio's MSBuildMSBuild hosting that should be considered when customizing projects and .targets files that you wish to load and build in Visual StudioVisual Studio. 이를 통해 IntelliSense 및 디버깅 작업과 같은 Visual StudioVisual Studio 기능이 사용자 지정 프로젝트에서 작동하는지 확인할 수 있습니다.These will help you make sure Visual StudioVisual Studio features like IntelliSense and debugging work for your custom project.

C++ 프로젝트에 대한 자세한 내용은 Project Files를 참조하세요.For information about C++ projects, see Project Files.

프로젝트 파일 확장명Project File Name Extensions

MSBuild.exe에서는 .proj 패턴과 일치하는 모든 프로젝트 파일 확장명을 인식합니다.MSBuild.exe recognizes any project file name extension matching the pattern .proj. 하지만 Visual StudioVisual Studio 에서는 프로젝트를 로드할 언어별 프로젝트 시스템을 결정하는 이러한 프로젝트 파일 확장명의 일부만 인식합니다.However, Visual StudioVisual Studio only recognizes a subset of these project file name extensions, which determine the language-specific project system that will load the project. Visual StudioVisual Studio 에는 언어 중립적인 MSBuildMSBuild 기반 프로젝트 시스템이 없습니다. does not have a language-neutral MSBuildMSBuild based project system.

예를 들어, Visual C#Visual C# 프로젝트 시스템에서는 .csproj 파일을 로드하지만 Visual StudioVisual Studio 에서는 .xxproj 파일을 로드할 수 없습니다.For example, the Visual C#Visual C# project system loads .csproj files, but Visual StudioVisual Studio is not able to load a .xxproj file. 임의의 언어로 된 소스 파일의 프로젝트 파일은 Visual BasicVisual Basic 에 로드되는 Visual C#Visual C# 또는 Visual StudioVisual Studio프로젝트 파일과 같은 확장명을 사용해야 합니다.A project file for source files in an arbitrary language must use the same extension as Visual BasicVisual Basic or Visual C#Visual C# project files to be loaded in Visual StudioVisual Studio.

잘 알려진 대상 이름Well-Known Target Names

에서 빌드 Visual StudioVisual Studio 명령을 클릭하면 프로젝트의 기본 대상이 실행됩니다.Clicking the Build command in Visual StudioVisual Studio will execute the default target in the project. 보통 이 대상을 Build라고도 합니다.Often, this target is also named Build. 다시 빌드 또는 정리 명령을 선택하면 프로젝트에서 같은 이름의 대상이 실행됩니다.Choosing the Rebuild or Clean command will attempt to execute a target of the same name in the project. 게시 를 클릭하면 프로젝트에서 PublishOnly 라는 대상이 실행됩니다.Clicking Publish will execute a target named PublishOnly in the project.

구성 및 플랫폼Configurations and Platforms

구성은 MSBuildMSBuild 특성을 포함하는 PropertyGroup 요소에서 그룹화된 속성으로 Condition 프로젝트에 표시됩니다.Configurations are represented in MSBuildMSBuild projects by properties grouped in a PropertyGroup element that contains a Condition attribute. Visual StudioVisual Studio 에서는 표시할 프로젝트 구성과 플랫폼 목록을 만들기 위해 이러한 조건을 확인합니다. looks at these conditions in order to create a list of project configurations and platforms to display. 이 목록을 추출하려면 조건의 형식이 다음과 비슷해야 합니다.To successfully extract this list, the conditions must have a format similar to the following:

Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "  
Condition=" '$(Configuration)' == 'Release' "   
Condition=" '$(Something)|$(Configuration)|$(SomethingElse)' == 'xxx|Debug|yyy' "  

Visual StudioVisual Studio 에서는 이를 위해 PropertyGroup, ItemGroup, Import, 속성 및 항목 요소에서 조건을 확인합니다. looks at the conditions on PropertyGroup, ItemGroup, Import, property, and item elements for this purpose.

추가 빌드 작업Additional Build Actions

Visual StudioVisual Studio 에서는 파일 속성 창의 빌드 작업 속성을 사용하여 프로젝트에 있는 파일의 항목 형식 이름을 변경할 수 있습니다. allows you to change the item type name of a file in a project with the Build Action property of the File Properties window. Compile, EmbeddedResource, Content, None 등의 항목 형식 이름은 프로젝트에 이미 있는 다른 모든 항목 형식 이름과 함께 항상 이 메뉴에 표시됩니다.Compile, EmbeddedResource, Content, and None item type names are always listed in this menu, along with any other item type names already in your project. 사용자 지정 항목 형식 이름이 항상 이 메뉴에 표시되도록 하려면 AvailableItemName이라는 항목 형식에 해당 이름을 추가하면 됩니다.To ensure any custom item type names are always available in this menu, you can add the names to an item type named AvailableItemName. 예를 들어, 프로젝트 파일에 다음을 추가하면 해당 파일을 가져오는 모든 프로젝트에 대해 JScript 사용자 지정 형식이 이 메뉴에 추가됩니다.For example, adding the following to your project file will add the custom type JScript to this menu for all projects that import it:

<ItemGroup>  
    <AvailableItemName Include="JScript"/>  
</ItemGroup>  

참고

일부 항목 형식 이름은 Visual StudioVisual Studio 에 대해 고유하지만 이 드롭다운에는 나열되어 있지 않습니다.Some item type names are special to Visual StudioVisual Studio but not listed in this dropdown.

In-Process 컴파일러In-Process Compilers

가능한 경우 Visual StudioVisual Studio에서는 성능 향상을 위해 in-process 버전의 Visual BasicVisual Basic 컴파일러를 사용하려고 시도합니다.When possible, Visual StudioVisual Studio will attempt to use the in-process version of the Visual BasicVisual Basic compiler for increased performance. Visual C#Visual C#에는 적용되지 않습니다. 이러한 시도는 다음 조건이 충족되어야 제대로 작동합니다.(Not applicable to Visual C#Visual C#.) For this to work correctly, the following conditions must be met:

  • 프로젝트 대상에 Vbc 프로젝트에 대한 Visual BasicVisual Basic 작업이 있어야 합니다.In a target of the project, there must be a task named Vbc for Visual BasicVisual Basic projects.

  • 작업의 UseHostCompilerIfAvailable 매개 변수가 true로 설정되어 있어야 합니다.The UseHostCompilerIfAvailable parameter of the task must be set to true.

디자인 타임 IntelliSenseDesign-Time IntelliSense

빌드에서 출력 어셈블리를 생성하기 전에 Visual StudioVisual Studio 에서 IntelliSense 지원을 받으려면 다음 조건이 충족되어야 합니다.To get IntelliSense support in Visual StudioVisual Studio before a build has generated an output assembly, the following conditions must be met:

  • Compile이라는 대상이 있어야 합니다.There must be a target named Compile.

  • Compile 대상 또는 해당 종속 대상 중 하나는 프로젝트에 대해 Csc 또는 Vbc와 같은 컴파일러 작업을 호출해야 합니다.Either the Compile target or one of its dependencies must call the compiler task for the project, such as Csc or Vbc.

  • Compile 대상 또는 해당 종속 대상 중 하나를 통해 컴파일러가 IntelliSense에 필요한 모든 매개 변수, 특히 모든 참조를 받도록 해야 합니다.Either the Compile target or one of its dependencies must cause the compiler to receive all the necessary parameters for IntelliSense, particularly all references.

  • "In-Process 컴파일러" 단원에 나열된 조건이 충족되어야 합니다.The conditions listed in the "In-Process Compilers" section must be met.

솔루션 빌드Building Solutions

Visual StudioVisual Studio내에서 솔루션 파일 및 프로젝트 빌드 순서는 Visual StudioVisual Studio 자체에서 제어합니다.Within Visual StudioVisual Studio, the solution file and project build ordering are controlled by Visual StudioVisual Studio itself. 명령줄에서 msbuild.exe를 사용하여 솔루션을 빌드할 때 MSBuildMSBuild 에서는 솔루션 파일을 구문 분석하고 프로젝트 빌드 순서를 정합니다.When building a solution with msbuild.exe on the command line, MSBuildMSBuild parses the solution file and orders the project builds. 두 경우 모두 프로젝트는 종속성 순서에 따라 개별적으로 빌드되며 프로젝트 간 참조는 검색되지 않습니다.In both cases the projects are built individually in dependency order, and project to project references are not traversed. 이와 대조적으로 msbuild.exe를 사용하여 개별 프로젝트를 빌드하면 프로젝트 간 참조가 검색됩니다.In contrast, when individual projects are built with msbuild.exe, project to project references are traversed.

Visual StudioVisual Studio내에서 빌드할 때 $(BuildingInsideVisualStudio) 속성은 true로 설정됩니다.When building inside Visual StudioVisual Studio, the property $(BuildingInsideVisualStudio) is set to true. 프로젝트 또는 .targets 파일에서 이 속성을 사용하여 빌드가 다르게 동작하도록 할 수 있습니다.This can be used in your project or .targets files to cause the build to behave differently.

속성 및 항목 표시Displaying Properties and Items

Visual StudioVisual Studio 에서는 특정 속성 이름과 값을 인식합니다. recognizes certain property names and values. 예를 들어, 프로젝트의 다음 속성을 사용하면 Windows 응용 프로그램프로젝트 디자이너응용 프로그램 형식상자에 나타납니다.For example, the following property in a project will cause Windows Application to appear in the Application Type box in the Project Designer.

<OutputType>WinExe</OutputType>  

속성 값은 프로젝트 디자이너 에서 편집할 수 있으며 프로젝트 파일에 저장할 수 있습니다.The property value can be edited in the Project Designer and saved in the project file. 이러한 속성을 직접 편집하여 잘못된 값이 지정되면 프로젝트가 로드될 때 Visual StudioVisual Studio 에서 경고를 표시하고 잘못된 값을 기본값으로 바꿉니다.If such a property is given an invalid value by hand-editing, Visual StudioVisual Studio will show a warning when the project is loaded and replace the invalid value with a default value.

Visual StudioVisual Studio 에서는 일부 속성의 기본값을 기억하고 있습니다. understands defaults for some properties. 이러한 속성은 기본값이 아닌 값을 가져야 프로젝트 파일에서 지속됩니다.These properties will not be persisted into the project file unless they have non-default values.

임의의 이름을 갖는 속성은 Visual StudioVisual Studio에 표시되지 않습니다.Properties with arbitrary names are not displayed in Visual StudioVisual Studio. Visual StudioVisual Studio에서 임의의 속성을 수정하려면 XML 편집기에서 프로젝트 파일을 열고 직접 편집해야 합니다.To modify arbitrary properties in Visual StudioVisual Studio, you must open the project file in the XML editor and edit them by hand. 자세한 내용은 이 항목 뒷부분에 나오는 Editing Project Files in Visual Studio 섹션을 참조하세요.For more information, see the Editing Project Files in Visual Studio section later in this topic.

임의의 항목 형식 이름을 사용하여 프로젝트에 정의된 항목은 기본적으로 솔루션 탐색기에서 해당 프로젝트 노드 아래 표시됩니다.Items defined in the project with arbitrary item type names are by default displayed in the Solution Explorer under their project node. 항목이 표시되지 않도록 하려면 Visible 메타데이터를 false로 설정합니다.To hide an item from display, set the Visible metadata to false. 예를 들어, 다음 항목은 빌드 프로세스에 사용되지만 솔루션 탐색기에는 표시되지 않습니다.For example, the following item will participate in the build process but not be displayed in Solution Explorer.

<ItemGroup>  
    <IntermediateFile Include="cache.temp">  
        <Visible>false</Visible>  
    </IntermediateFile>  
</ItemGroup>  

프로젝트로 가져온 파일에 선언한 항목은 기본적으로 표시되지 않습니다.Items declared in files imported into the project are not displayed by default. 빌드 프로세스 동안 만들어진 항목은 솔루션 탐색기에 표시되지 않습니다.Items created during the build process are never displayed in Solution Explorer.

항목 및 속성에 대한 조건Conditions on Items and Properties

빌드하는 동안 모든 조건이 완전히 고려됩니다.During a build, all conditions are fully respected.

표시할 속성 값을 결정할 때 Visual StudioVisual Studio 에서 구성에 종속적인 속성은 구성에 무관한 속성과 다르게 확인됩니다.When determining property values to display, properties that Visual StudioVisual Studio considers configuration dependent are evaluated differently than properties it considers configuration independent. 구성에 종속적인 속성인 경우 Visual StudioVisual Studio 에서는 ConfigurationPlatform 속성을 적절하게 설정하고 MSBuildMSBuild 에 프로젝트를 다시 확인하도록 지시합니다.For properties it considers configuration dependent, Visual StudioVisual Studio sets the Configuration and Platform properties appropriately and instructs MSBuildMSBuild to re-evaluate the project. 구성에 무관한 속성인 경우 조건이 확인되는 방법이 확실하지 않습니다.For properties it considers configuration independent, it is indeterminate how conditions will be evaluated.

항목을 솔루션 탐색기에 표시해야 하는지 여부를 결정할 수 있도록 항목에 대한 조건식은 항상 무시됩니다.Conditional expressions on items are always ignored for the purposes of deciding whether the item should be displayed in Solution Explorer.

디버깅Debugging

출력 어셈블리를 찾아서 시작하고 디버거를 연결하려면 Visual StudioVisual Studio 에서 OutputPath, AssemblyNameOutputType 속성이 올바르게 정의되어 있어야 합니다.In order to find and launch the output assembly and attach the debugger, Visual StudioVisual Studio needs the properties OutputPath, AssemblyName, and OutputType correctly defined. 빌드 프로세스에서 컴파일러를 통해 .pdb 파일을 생성하지 않으면 디버거가 연결되지 않습니다.The debugger will fail to attach if the build process did not cause the compiler to generate a .pdb file.

디자인 타임 대상 실행Design-Time Target Execution

Visual StudioVisual Studio 에서는 프로젝트를 로드할 때 특정 이름의 대상을 실행하려고 시도합니다. attempts to execute targets with certain names when it loads a project. 이러한 대상에는 Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPathsCopyRunEnvironmentFiles가 있습니다.These targets include Compile, ResolveAssemblyReferences, ResolveCOMReferences, GetFrameworkPaths, and CopyRunEnvironmentFiles. Visual StudioVisual Studio 에서는 이러한 대상을 실행하여 컴파일러가 IntelliSense를 제공하도록 초기화되거나, 디버거가 초기화되거나, 솔루션 탐색기에 표시된 참조가 확인될 수 있도록 할 수 있습니다. runs these targets so that the compiler can be initialized to provide IntelliSense, the debugger can be initialized, and references displayed in Solution Explorer can be resolved. 이러한 대상이 없어도 프로젝트를 제대로 로드하고 빌드할 수는 있지만 Visual StudioVisual Studio 에서 디자인 타임 환경이 완전하게 작동하지 않습니다.If these targets are not present, the project will load and build correctly but the design-time experience in Visual StudioVisual Studio will not be fully functional.

Editing Project Files in Visual StudioEditing Project Files in Visual Studio

MSBuildMSBuild 프로젝트를 직접 편집하려면 Visual Studio XML 편집기에서 프로젝트 파일을 열 수 있습니다.To edit an MSBuildMSBuild project directly, you can open the project file in the Visual Studio XML editor.

Visual Studio에서 프로젝트 파일을 언로드 및 편집하려면To unload and edit a project file in Visual Studio

  1. 솔루션 탐색기에서 프로젝트의 바로 가기 메뉴를 열고 프로젝트 언로드를 선택합니다.In Solution Explorer, open the shortcut menu for the project, and then choose Unload Project.

    해당 프로젝트가 (사용할 수 없음)으로 표시됩니다.The project is marked (unavailable).

  2. 솔루션 탐색기에서 사용할 수 없는 프로젝트의 바로 가기 메뉴를 열고 편집 <프로젝트 파일>을 선택합니다.In Solution Explorer, open the shortcut menu for the unavailable project, and then choose Edit <Project File>.

    해당 프로젝트 파일이 Visual Studio XML 편집기에 열립니다.The project file opens in the Visual Studio XML Editor.

  3. 프로젝트 파일을 편집 및 저장한 후 닫습니다.Edit, save, and then close the project file.

  4. 솔루션 탐색기에서 사용할 수 없는 프로젝트의 바로 가기 메뉴를 열고 프로젝트 다시 로드를 선택합니다.In Solution Explorer, open the shortcut menu for the unavailable project, and then choose Reload Project.

IntelliSense 및 유효성 검사IntelliSense and Validation

XML 편집기를 사용하여 프로젝트 파일을 편집할 경우 MSBuildMSBuild 스키마 파일에서 IntelliSense 및 유효성 검사를 실행합니다.When using the XML editor to edit project files, IntelliSense and validation is driven by the MSBuildMSBuild schema files. 이러한 스키마 파일은 <Visual Studio 설치 디렉터리>\Xml\Schemas\1033\MSBuild에 있는 스키마 캐시에 설치됩니다.These are installed in the schema cache, which can be found in <Visual Studio installation directory>\Xml\Schemas\1033\MSBuild.

핵심 MSBuildMSBuild 형식은 Microsoft.Build.Core.xsd에 정의되고 Visual StudioVisual Studio에서 사용되는 일반 형식은 Microsoft.Build.CommonTypes.xsd에 정의됩니다.The core MSBuildMSBuild types are defined in Microsoft.Build.Core.xsd and common types used by Visual StudioVisual Studio are defined in Microsoft.Build.CommonTypes.xsd. 사용자 지정 항목 형식 이름, 속성, 작업 등에 대해 IntelliSense 및 유효성 검사를 적용하도록 스키마를 사용자 지정하려면 Microsoft.Build.xsd를 편집하거나 CommonTypes 또는 핵심 스키마를 포함하는 스키마를 직접 만들면 됩니다.To customize the schemas so that you have IntelliSense and validation for custom item type names, properties, and tasks, you can either edit Microsoft.Build.xsd, or create your own schema that includes the CommonTypes or Core schemas. 스키마를 직접 만들 경우 속성 창을 사용하여 해당 스키마를 찾도록 XML 편집기에 지시해야 합니다.If you create your own schema you will have to direct the XML editor to find it using the Properties window.

로드된 프로젝트 파일 편집Editing Loaded Project Files

Visual StudioVisual Studio 에서는 프로젝트 파일과 프로젝트 파일이 가져온 파일의 내용을 캐시합니다. caches the content of project files and files imported by project files. 로드된 프로젝트 파일을 편집할 경우 Visual StudioVisual Studio 에서는 변경 내용이 적용되도록 프로젝트를 다시 로드하라는 메시지를 자동으로 표시합니다.If you edit a loaded project file, Visual StudioVisual Studio will automatically prompt you to reload the project so that the changes take effect. 하지만 로드된 프로젝트에서 가져온 파일을 편집할 경우에는 다시 로드하라는 메시지가 표시되지 않으므로 변경 내용을 적용하려면 수동으로 프로젝트를 언로드한 후 다시 직접 로드해야 합니다.However if you edit a file imported by a loaded project, there will be no reload prompt and you must unload and reload the project manually to make the changes take effect.

출력 그룹Output Groups

Microsoft.Common.targets에 정의된 몇 가지 대상의 이름은 OutputGroups 또는 OutputGroupDependencies로 끝납니다.Several targets defined in Microsoft.Common.targets have names ending in OutputGroups or OutputGroupDependencies. Visual StudioVisual Studio 에서는 이러한 대상을 호출하여 특정한 프로젝트 출력 목록을 얻습니다. calls these targets to get specific lists of project outputs. 예를 들어, SatelliteDllsProjectOutputGroup 대상은 빌드에서 만드는 모든 위성 어셈블리 목록을 만듭니다.For example, the SatelliteDllsProjectOutputGroup target creates a list of all the satellite assemblies a build will create. 이러한 출력 그룹은 게시, 배포 및 프로젝트 간 참조와 같은 기능에서 사용됩니다.These output groups are used by features like publishing, deployment, and project to project references. 출력 그룹이 정의되지 않은 프로젝트는 Visual StudioVisual Studio에서 로드되고 빌드되지만 일부 기능은 제대로 작동하지 않을 수 있습니다.Projects that do not define them will load and build in Visual StudioVisual Studio, but some features may not work correctly.

참조 확인Reference Resolution

참조 확인은 프로젝트 파일에 저장된 참조 항목을 사용하여 실제 어셈블리를 찾는 과정입니다.Reference resolution is the process of using the reference items stored in a project file to locate actual assemblies. Visual StudioVisual Studio 에서는 속성 창에 각 참조에 대한 자세한 속성을 표시하기 위해 참조 확인을 트리거해야 합니다. must trigger reference resolution in order to show detailed properties for each reference in the Properties window. 다음 목록에서는 세 가지 참조 형식과 참조 확인 방법을 설명합니다.The following list describes the three types of references and how they are resolved.

  • 어셈블리 참조:Assembly references:

    프로젝트 시스템에서 잘 알려진 이름이 ResolveAssemblyReferences인 대상을 호출합니다.The project system calls a target with the well-known name ResolveAssemblyReferences. 이 대상은 항목 형식 이름이 ReferencePath인 항목을 출력해야 합니다.This target should produce items with the item type name ReferencePath. 이러한 항목에는 각각 참조에 대한 전체 경로를 포함하는 항목 사양(항목의 Include 특성 값)이 있어야 합니다.Each of these items should have an item specification (the value of the Include attribute of an item) containing the full path to the reference. 항목에는 다음과 같은 새 메타데이터 외에 전달된 입력 항목의 모든 메타데이터가 있어야 합니다.The items should have all the metadata from the input items passed through in addition to the following new metadata:

    • CopyLocal: 어셈블리를 출력 폴더로 복사할지 여부를 true 또는 false로 설정하여 나타냅니다.CopyLocal, indicating whether the assembly should be copied into the output folder, set to true or false.

    • OriginalItemSpec: 참조의 원본 항목 사양이 포함되어 있습니다.OriginalItemSpec, containing the original item specification of the reference.

    • ResolvedFrom: .NET Framework.NET Framework 디렉터리에서 확인된 경우 "{TargetFrameworkDirectory}"로 설정됩니다.ResolvedFrom, set to "{TargetFrameworkDirectory}" if it was resolved from the .NET Framework.NET Framework directory.

  • COM 참조:COM references:

    프로젝트 시스템에서 잘 알려진 이름이 ResolveCOMReferences인 대상을 호출합니다.The project system calls a target with the well-known name ResolveCOMReferences. 이 대상은 항목 형식 이름이 ComReferenceWrappers인 항목을 출력해야 합니다.This target should produce items with the item type name ComReferenceWrappers. 이러한 항목에는 각각 COM 참조에 대해 Interop 어셈블리의 전체 경로를 포함하는 항목 사양이 있어야 합니다.Each of these items should have an item specification containing the full path to the interop assembly for the COM reference. 항목에는 전달된 입력 항목의 모든 메타데이터와 함께, 어셈블리를 출력 폴더로 복사할지 여부를 true 또는 false로 설정하여 나타내는 CopyLocal이라는 이름의 새 메타데이터가 있어야 합니다.The items should have all the metadata from the input items passed through, in addition to new metadata with the name CopyLocal, indicating whether the assembly should be copied into the output folder, set to true or false

  • 네이티브 참조Native references

    프로젝트 시스템에서 잘 알려진 이름이 ResolveNativeReferences인 대상을 호출합니다.The project system calls a target with the well-known name ResolveNativeReferences. 이 대상은 항목 형식 이름이 NativeReferenceFile인 항목을 출력해야 합니다.This target should produce items with the item type name NativeReferenceFile. 항목에는 전달된 입력 항목의 모든 메타데이터와 함께, 참조의 원본 항목 사양이 포함되어 있는 OriginalItemSpec이라는 새로운 메타데이터 부분이 있어야 합니다.The items should have all the metadata from the input items passed through, in addition to a new piece of metadata named OriginalItemSpec, containing the original item specification of the reference.

성능 바로 가기Performance Shortcuts

Visual Studio UI에서 디버깅을 시작하는 경우(F5 키를 선택하거나 메뉴 모음에서 디버그, 디버깅 시작 선택), 빌드 프로세스는 성능 향상을 위해 빠른 업데이트 검사를 사용합니다.If you start debugging in the Visual Studio UI (either by choosing the F5 key or by choosing Debug, Start Debugging on the menu bar), the build process uses a fast update check to improve performance. 사용자 지정된 빌드가 이후에 다시 빌드되는 파일을 생성하는 경우, 빠른 업데이트 검사에서 변경된 파일이 올바르게 식별되지 않습니다.In some cases where customized builds create files that get built in turn, the fast update check does not correctly identify the changed files. 보다 철저한 업데이트 검사가 필요한 프로젝트에서는 환경 변수 DISABLEFASTUPTODATECHECK=1을 설정하여 빠른 검사를 해제할 수 있습니다.Projects that need more thorough update checks can turn off the fast checking by setting the environment variable DISABLEFASTUPTODATECHECK=1. 또는 프로젝트에서 이 항목을 프로젝트의 또는 프로젝트가 가져오는 파일의 MSBuild 속성으로 설정할 수 있습니다.Alternatively, projects can set this as an MSBuild property in the project or in a file the project imports.

Visual Studio의 일반 빌드에는 빠른 업데이트 검사가 적용되지 않으며, 명령 프롬프트에서 빌드를 호출한 것처럼 프로젝트가 빌드됩니다.For regular builds in Visual Studio, the fast update check doesn't apply, and the project will build as if you invoked the build at a command prompt.

참고 항목See Also

방법: Visual Studio 빌드 프로세스 확장 How to: Extend the Visual Studio Build Process
IDE에서 빌드 시작 Starting a Build from within the IDE
.NET Framework 확장명 등록 Registering Extensions of the .NET Framework
MSBuild 개념 MSBuild Concepts
Item 요소(MSBuild) Item Element (MSBuild)
Property 요소(MSBuild) Property Element (MSBuild)
Target 요소(MSBuild) Target Element (MSBuild)
Csc 작업 Csc Task
Vbc 작업Vbc Task