방법: 여러 프로젝트 파일에서 동일한 대상 사용How to: Use the Same Target in Multiple Project Files

여러 MSBuildMSBuild 프로젝트 파일을 만들었으면 다른 프로젝트 파일에서 동일한 작업 및 대상을 사용해야 할 수 있다는 사실을 알게 되었을 것입니다.If you have authored several MSBuildMSBuild project files, you might have discovered that you need to use the same tasks and targets in different project files. 모든 프로젝트 파일에 이러한 작업이나 대상에 대한 완전한 설명을 포함하는 대신, 대상을 별도 프로젝트 파일에 저장한 다음, 해당 대상을 사용해야 하나ㅡㄴ 다른 프로젝트로 해당 프로젝트를 가져올 수 있습니다.Instead of including the complete description of those tasks or targets in every project file, you can save a target in a separate project file and then import that project into any other project that needs to use the target.

Import 요소 사용Using the Import Element

Import 요소는 한 프로젝트 파일을 다른 프로젝트 파일에 삽입하는 데 사용됩니다.The Import element is used to insert one project file into another project file. 가져올 프로젝트 파일은 유효한 MSBuildMSBuild 프로젝트 파일이어야 하며 올바른 형식의 XML을 포함해야 합니다.The project file that is being imported must be a valid MSBuildMSBuild project file and contain well-formed XML. Project 특성은 가져온 프로젝트 파일의 경로를 지정합니다.The Project attribute specifies the path to the imported project file. Import 요소에 대한 자세한 내용은 Import 요소(MSBuild)를 참조하세요.For more information on the Import element, see Import Element (MSBuild).

프로젝트를 가져오려면To import a project

  1. 가져온 프로젝트의 속성 및 항목에 대한 매개 변수로 사용되는 모든 속성 및 항목을 가져오기 프로젝트 파일에 정의합니다.Define, in the importing project file, all properties and items that are used as parameters for properties and items in the imported project.

  2. Import 요소를 사용하여 프로젝트를 가져옵니다.Use the Import element to import the project. 예:For example:

    <Import Project="MyCommon.targets"/>

  3. Import 요소 다음에, 가져온 프로젝트의 속성 및 항목의 기본 정의를 재정의해야 하는 모든 속성 및 항목을 프로젝트 파일에 정의합니다.Following the Import element, define all properties and items that must override default definitions of properties and items in the imported project.

확인 순서Order of Evaluation

MSBuildMSBuildImport 요소에 도달하면 가져온 프로젝트는 Import 요소의 해당 위치에 있는 가져오기 프로젝트에 효과적으로 삽입됩니다.When MSBuildMSBuild reaches an Import element, the imported project is effectively inserted into the importing project at the location of the Import element. 따라서 Import 요소의 위치는 속성 및 항목의 값에 영향을 줄 수 있습니다.Therefore, the location of the Import element can affect the values of properties and items. 가져온 프로젝트에 의해 설정된 속성 및 항목과 가져온 프로젝트가 사용하는 속성 및 항목을 이해하는 것이 중요합니다.It is important to understand the properties and items that are set by the imported project, and the properties and items that the imported project uses.

프로젝트가 빌드될 때 모든 속성이 먼저 평가된 후 항목이 평가됩니다.When the project builds, all properties are evaluated first, followed by items. 예를 들어, 다음 XML은 가져온 프로젝트 파일 MyCommon.targets를 정의합니다.For example, the following XML defines the imported project file MyCommon.targets:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <PropertyGroup>  
        <Name>MyCommon</Name>  
    </PropertyGroup>  

    <Target Name="Go">  
        <Message Text="Name=$(Name)"/>  
    </Target>  
</Project>  

다음 XML은 MyCommon.targets를 가져오는 MyApp.proj를 정의합니다.The following XML defines MyApp.proj, which imports MyCommon.targets:

<Project  
    DefaultTargets="Go"  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <PropertyGroup>  
        <Name>MyApp</Name>  
    </PropertyGroup>  
    <Import Project="MyCommon.targets"/>  
</Project>  

프로젝트가 빌드될 때 다음과 같은 메시지가 표시됩니다.When the project builds, the following message is displayed:

Name="MyCommon"

속성 Name이 MyApp.proj에 정의된 이후에 프로젝트를 가져오므로 MyCommon.targets의 Name 정의가 MyApp.proj이 정의를 재정의합니다.Because the project is imported after the property Name has been defined in MyApp.proj, the definition of Name in MyCommon.targets overrides the definition in MyApp.proj. 속성 Name이 정의되기 전에 프로젝트를 가져오면 빌드는 다음 메시지를 표시합니다.If, the project is imported before the property Name is defined, the build would display the following message:

Name="MyApp"

프로젝트를 가져올 때 다음 방법 사용Use the following approach when importing projects

  1. 가져온 프로젝트의 속성 및 항목에 대한 매개 변수로 사용되는 모든 속성 및 항목을 프로젝트 파일에 정의합니다.Define, in the project file, all properties and items that are used as parameters for properties and items in the imported project.

  2. 프로젝트를 가져옵니다.Import the project.

  3. 가져온 프로젝트의 속성 및 항목의 기본 정의를 재정의해야 하는 모든 속성 및 항목을 프로젝트 파일에 정의합니다.Define in the project file all properties and items that must override default definitions of properties and items in the imported project.

Example

다음 코드 예제에서는 두 번째 코드 예제에서 가져오는 MyCommon.targets 파일을 보여 줍니다.The following code example shows the MyCommon.targets file that the second code example imports. .targets 파일은 가져오기 프로젝트의 속성을 평가하여 빌드를 구성합니다.The .targets file evaluates properties from the importing project to configure the build.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <PropertyGroup>  
        <Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>  
        <Optimize Condition="'$(Flavor)'=='RETAIL'">yes</Optimize>  
        <appname>$(MSBuildProjectName)</appname>  
    <PropertyGroup>  
    <Target Name="Build">  
        <Csc Sources="hello.cs"  
            Optimize="$(Optimize)"  
            OutputAssembly="$(appname).exe"/>  
    </Target>  
</Project>  

Example

다음 코드 예제에서는 MyCommon.targets 파일을 가져옵니다.The following code example imports the MyCommon.targets file.

<Project DefaultTargets="Build"  
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  
    <PropertyGroup>  
        <Flavor>RETAIL</Flavor>  
    </PropertyGroup>  
    <Import Project="MyCommon.targets"/>  
</Project>  

참고 항목See Also

Import 요소(MSBuild) Import Element (MSBuild)
대상Targets