다음을 통해 공유


기본 프로젝트 시스템 만들기, 2부

이 시리즈의 첫 번째 연습인 기본 프로젝트 시스템 만들기, 1부에서는 기본 프로젝트 시스템을 만드는 방법을 보여 줍니다. 이 연습은 Visual Studio 템플릿, 속성 페이지, 기타 기능을 추가하여 기본 프로젝트 시스템을 기반으로 합니다. 이 연습을 시작하기 전에 첫 번째 연습을 완료해야 합니다.

이 연습에서는 프로젝트 파일 이름 확장명이 .myproj인 프로젝트 형식을 만드는 방법을 설명합니다. 이 연습은 기존의 Visual C# 프로젝트 시스템에서 차용하므로 연습을 완료하기 위해 사용자 고유의 언어를 만들 필요가 없습니다.

이 연습에서는 다음 작업을 수행하는 방법을 설명합니다.

  • Visual Studio 템플릿을 만듭니다.

  • Visual Studio 템플릿을 배포합니다.

  • 새 프로젝트 대화 상자에서 프로젝트 형식 자식 노드를 만듭니다.

  • Visual Studio 템플릿에서 매개 변수 대체를 사용하도록 설정합니다.

  • 프로젝트 속성 페이지를 만듭니다.

참고 항목

이 연습의 단계는 C# 프로젝트를 기반으로 합니다. 그러나 파일 이름 확장명 및 코드와 같은 세부 사항을 제외하고 Visual Basic 프로젝트에 대해 동일한 단계를 사용할 수 있습니다.

Visual Studio 템플릿 만들기

  • 기본 프로젝트 시스템 만들기, 1부에서는 기본 프로젝트 템플릿을 만들어 프로젝트 시스템에 추가하는 방법을 보여 줍니다. 또한 시스템 레지스트리에서 \Templates\Projects\SimpleProject\ 폴더의 전체 경로를 작성하는 ProvideProjectFactoryAttribute 속성을 사용하여 이 템플릿을 Visual Studio에 등록하는 방법을 보여 줍니다.

기본 프로젝트 템플릿 대신 Visual Studio 템플릿(.vstemplate 파일)을 사용하면 템플릿이 새 프로젝트 대화 상자에 표시되는 방법과 템플릿 매개 변수가 대체되는 방법을 제어할 수 있습니다. .vstemplate 파일은 프로젝트 시스템 템플릿을 사용하여 프로젝트를 만들 때 원본 파일을 포함하는 방법을 설명하는 XML 파일입니다. 프로젝트 시스템 자체는 .vstemplate 파일 및 소스 파일을 .zip 파일에서 수집하여 빌드하고 .zip 파일을 Visual Studio에 알려진 위치에 복사하여 배포합니다. 이 프로세스는 이 연습의 뒷부분에서 자세히 설명합니다.

  1. Visual Studio에서 기본 프로젝트 시스템 만들기, 1부에 따라 만든 SimpleProject 솔루션을 엽니다.

  2. SimpleProjectPackage.cs 파일에서 ProvideProjectFactory 특성을 찾습니다. 다음과 같이 두 번째 매개 변수(프로젝트 이름)를 null로 바꾸고 네 번째 매개 변수(프로젝트 템플릿 폴더의 경로)를 “.\\NullPath”로 바꿉니다.

    [ProvideProjectFactory(typeof(SimpleProjectFactory), null,
        "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj",
        ".\\NullPath",
    LanguageVsTemplate = "SimpleProject")]
    
  3. SimpleProject.vstemplate라는 XML 파일을 \Templates\Projects\SimpleProject\ 폴더에 추가합니다.

  4. SimpleProject.vstemplate의 내용을 다음 코드로 바꿉니다.

    <VSTemplate Version="2.0.0" Type="Project"
        xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
      <TemplateData>
        <Name>SimpleProject Application</Name>
        <Description>
          A project for creating a SimpleProject application
        </Description>
        <Icon>SimpleProject.ico</Icon>
        <ProjectType>SimpleProject</ProjectType>
      </TemplateData>
      <TemplateContent>
        <Project File="SimpleProject.myproj" ReplaceParameters="true">
          <ProjectItem ReplaceParameters="true" OpenInEditor="true">
            Program.cs
          </ProjectItem>
          <ProjectItem ReplaceParameters="true" OpenInEditor="false">
            AssemblyInfo.cs
          </ProjectItem>
        </Project>
      </TemplateContent>
    </VSTemplate>
    
  5. 속성 창에서 \Templates\Projects\SimpleProject\ 폴더의 5개 파일을 모두 선택하고 빌드 작업ZipProject로 설정합니다.

    Simple Project Folder

    <TemplateData> 섹션은 다음과 같이 새 프로젝트 대화 상자에서 SimpleProject 프로젝트 형식의 위치와 모양을 결정합니다.

  • <Name> 요소는 프로젝트 템플릿의 이름을 SimpleProject 애플리케이션으로 지정합니다.

  • <Description> 요소에는 프로젝트 템플릿을 선택할 때 새 프로젝트 대화 상자에 표시되는 설명이 포함되어 있습니다.

  • <Icon> 요소는 SimpleProject 프로젝트 형식과 함께 표시되는 아이콘을 지정합니다.

  • <ProjectType> 요소는 새 프로젝트 대화 상자에서 프로젝트 형식의 이름을 지정합니다. 이 이름은 ProvideProjectFactory 특성의 프로젝트 이름 매개 변수를 대체합니다.

    참고 항목

    <ProjectType> 요소는 SimpleProjectPackage.cs 파일에 있는 ProvideProjectFactory 특성의 LanguageVsTemplate 인수와 일치해야 합니다.

    <TemplateContent> 섹션에서는 새 프로젝트가 만들어질 때 생성되는 다음 파일에 대해 설명합니다.

  • SimpleProject.myproj

  • Program.cs

  • AssemblyInfo.cs

    세 파일 모두 ReplaceParameters가 true로 설정되어 매개 변수 대체가 가능합니다. Program.cs 파일의 OpenInEditor가 true로 설정되어 프로젝트가 만들어질 때 파일이 코드 편집기에서 열립니다.

    Visual Studio 템플릿 스키마의 요소에 대한 자세한 내용은 Visual Studio 템플릿 스키마 참조를 참조하세요.

참고 항목

프로젝트에 둘 이상의 Visual Studio 템플릿이 있는 경우 모든 템플릿은 별도의 폴더에 있습니다. 해당 폴더의 모든 파일에는 빌드 작업ZipProject로 설정되어 있어야 합니다.

최소 .vsct 파일 추가

Visual Studio는 새 Visual Studio 템플릿 또는 수정된 Visual Studio 템플릿을 인식하도록 설정 모드에서 실행되어야 합니다. 설정 모드를 사용하려면 .vsct 파일이 있어야 합니다. 따라서 프로젝트에 최소한의 .vsct 파일을 추가해야 합니다.

  1. SimpleProject.vsct라는 XML 파일을 SimpleProject 프로젝트에 추가합니다.

  2. SimpleProject.vsct 파일의 내용을 다음 코드로 바꿉니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <CommandTable
      xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable">
    </CommandTable>
    
  3. 이 파일의 빌드 작업VSCTCompile로 설정합니다. 속성 창이 아닌 .csproj 파일에서만 이 작업을 수행할 수 있습니다. 이때 이 파일의 빌드 작업없음으로 설정되어 있는지 확인합니다.

    1. SimpleProject 노드를 마우스 오른쪽 단추로 클릭한 다음 SimpleProject.csproj 편집을 클릭합니다.

    2. .csproj 파일에서 SimpleProject.vsct 항목을 찾습니다.

      <None Include="SimpleProject.vsct" />
      
    3. 빌드 작업을 VSCTCompile로 변경합니다.

      <VSCTCompile Include="SimpleProject.vsct" />
      
    4. 프로젝트 파일을 저장하고 편집기를 닫습니다.

    5. SimpleProject 노드를 저장한 다음 솔루션 탐색기에서 프로젝트 다시 로드를 클릭합니다.

Visual Studio 템플릿 빌드 단계 검사

VSPackage 프로젝트 빌드 시스템은 일반적으로 .vstemplate 파일이 변경되거나 .vstemplate 파일이 포함된 프로젝트가 다시 빌드될 때 설정 모드에서 Visual Studio를 실행합니다. MSBuild의 세부 정보 수준을 보통 이상으로 설정하여 팔로우할 수 있습니다.

  1. 도구 메뉴에서 옵션을 클릭합니다.

  2. 프로젝트 및 솔루션 노드를 확장한 다음 빌드 및 실행을 선택합니다.

  3. MSBuild 프로젝트 빌드 출력 세부 정보 표시보통으로 설정합니다. 확인을 클릭합니다.

  4. SimpleProject 프로젝트를 다시 빌드합니다.

    .zip 프로젝트 파일을 만드는 빌드 단계는 다음 예제와 유사합니다.

ZipProjects:
1>  Zipping ProjectTemplates
1>  Zipping <path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip...
1>  Copying file from "<path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip" to "<%LOCALAPPDATA%>\Microsoft\VisualStudio\14.0Exp\ProjectTemplates\\\\SimpleProject.zip".
1>  Copying file from "<path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip" to "bin\Debug\\ProjectTemplates\\\\SimpleProject.zip".
1>  SimpleProject -> <path>\SimpleProject\SimpleProject\bin\Debug\ProjectTemplates\SimpleProject.zip
1>ZipItems:
1>  Zipping ItemTemplates
1>  SimpleProject ->

Visual Studio 템플릿 배포

Visual Studio 템플릿에는 경로 정보가 포함되어 있지 않습니다. 따라서 템플릿 .zip 파일을 Visual Studio에 알려진 위치에 배포해야 합니다. ProjectTemplates 폴더의 위치는 일반적으로 <%LOCALAPPDATA%>\Microsoft\VisualStudio\14.0Exp\ProjectTemplates입니다.

프로젝트 팩터리를 배포하려면 설치 프로그램에 관리자 권한이 있어야 합니다. Visual Studio 설치 노드: ...\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates 아래에 템플릿을 배포합니다.

Visual Studio 템플릿 테스트

Visual Studio 템플릿을 사용하여 프로젝트 계층 구조를 만드는지 여부를 확인하려면 프로젝트 팩터리를 테스트합니다.

  1. Visual Studio SDK 실험적 인스턴스를 재설정합니다.

    Windows 7: 시작 메뉴에서 Microsoft Visual Studio/Microsoft Visual Studio SDK/Tools 폴더를 찾은 다음 Microsoft Visual Studio 실험적 인스턴스 초기화를 선택합니다.

    이후 버전의 Windows: 시작 화면에서 Microsoft Visual Studio <버전> 실험적 인스턴스 초기화를 입력합니다.

  2. 명령 프롬프트 창이 나타납니다. 계속하려면 아무 키나 누르세요라는 문구가 표시되면 ENTER를 클릭합니다. 창이 닫히면 Visual Studio를 엽니다.

  3. SimpleProject 프로젝트를 다시 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다.

  4. 실험적 인스턴스에서 SimpleProject 프로젝트를 만듭니다. 새 프로젝트 대화 상자에서 SimpleProject를 선택합니다.

  5. SimpleProject의 새 인스턴스가 표시됩니다.

    Simple Project New Instance

    My Project New Instance

프로젝트 형식 자식 노드 만들기

프로젝트 대화 상자에서 프로젝트 형식 노드에 자식 노드를 추가할 수 있습니다. 예를 들어 SimpleProject 프로젝트 형식의 경우 콘솔 애플리케이션, 창 애플리케이션, 웹 애플리케이션 등에 대한 자식 노드가 있을 수 있습니다.

자식 노드는 프로젝트 파일을 변경하고 <ZipProject> 요소에 <OutputSubPath> 자식을 추가하여 만들어집니다. 빌드 또는 배포 중에 템플릿을 복사하면 모든 자식 노드가 프로젝트 템플릿 폴더의 하위 폴더가 됩니다.

이 섹션에서는 SimpleProject 프로젝트 형식에 대한 콘솔 자식 노드를 만드는 방법을 보여 줍니다.

  1. \Templates\Projects\SimpleProject\ 폴더의 이름을 \Templates\Projects\ConsoleApp\로 바꿉니다.

  2. 속성 창에서 \Templates\Projects\ConsoleApp\ 폴더의 5개 파일을 모두 선택하고 빌드 작업ZipProject로 설정되어 있는지 확인합니다.

  3. SimpleProject.vstemplate 파일에서 닫는 태그 바로 앞의 <TemplateData> 섹션 끝에 다음 줄을 추가합니다.

    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    

    이렇게 하면 콘솔 애플리케이션 템플릿이 콘솔 자식 노드와 자식 노드보다 한 수준 높은 SimpleProject 부모 노드에 모두 표시됩니다.

  4. SimpleProject.vstemplate 파일을 저장합니다.

  5. .csproj 파일에서 각 ZipProject 요소에 <OutputSubPath>를 추가합니다. 이전과 같이 프로젝트를 언로드하고 프로젝트 파일을 편집합니다.

  6. <ZipProject> 요소를 찾습니다. 각 <ZipProject> 요소에 <OutputSubPath> 요소를 추가하고 콘솔 값을 지정합니다. The ZipProject

    <ZipProject Include="Templates\Projects\ConsoleApp\AssemblyInfo.cs">
      <OutputSubPath>Console</OutputSubPath>
    </ZipProject>
    <ZipProject Include="Templates\Projects\ConsoleApp\Program.cs">
      <OutputSubPath>Console</OutputSubPath>
    </ZipProject>
    <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.myproj">
      <OutputSubPath>Console</OutputSubPath>
    </ZipProject>
    <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.vstemplate">
      <OutputSubPath>Console</OutputSubPath>
    </ZipProject>
    <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.ico">
      <OutputSubPath>Console</OutputSubPath>
    </ZipProject>
    
  7. 이 <PropertyGroup>을 프로젝트 파일에 추가합니다.

    <PropertyGroup>
      <VsTemplateLanguage>SimpleProject</VsTemplateLanguage>
    </PropertyGroup>
    
  8. 프로젝트 파일을 저장하고 프로젝트를 다시 로드합니다.

프로젝트 형식 자식 노드 테스트

수정된 프로젝트 파일을 테스트하여 콘솔 자식 노드가 새 프로젝트 대화 상자에 표시되는지 확인합니다.

  1. Microsoft Visual Studio 실험적 인스턴스 초기화 도구를 실행합니다.

  2. SimpleProject 프로젝트를 다시 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 표시되어야 합니다.

  3. 새 프로젝트 대화 상자에서 SimpleProject 노드를 클릭합니다. 콘솔 애플리케이션 템플릿이 템플릿 창에 표시됩니다.

  4. SimpleProject 노드를 확장합니다. 콘솔 자식 노드가 나타납니다. SimpleProject 애플리케이션 템플릿이 템플릿 창에 계속 표시됩니다.

  5. 취소를 클릭하고 디버깅을 중지합니다.

    Simple Project Rollup

    Simple Project Console Node

대체 프로젝트 템플릿 매개 변수

  • 기본 프로젝트 시스템 만들기, 1부에서는 기본 종류의 템플릿 매개 변수 대체를 수행하도록 ProjectNode.AddFileFromTemplate 메서드를 덮어쓰는 방법을 보여 주었습니다. 이 섹션에서는 보다 정교한 Visual Studio 템플릿 매개 변수를 사용하는 방법을 설명합니다.

새 프로젝트 대화 상자에서 Visual Studio 템플릿을 사용하여 프로젝트를 만들면 템플릿 매개 변수가 문자열로 대체되어 프로젝트를 사용자 지정합니다. 템플릿 매개 변수는 달러 기호로 시작하고 끝나는 특수 토큰입니다(예: $time$). 다음 두 매개 변수는 템플릿을 기반으로 하는 프로젝트에서 사용자 지정을 사용하도록 설정하는 데 특히 유용합니다.

  • $GUID[1-10]$은 새 GUID로 대체됩니다. 최대 10개의 고유 GUID를 지정할 수 있습니다(예: $guid1$).

  • $safeprojectname$는 새 프로젝트 대화 상자에서 사용자가 제공한 이름으로, 안전하지 않은 문자와 공백을 모두 제거하도록 수정되었습니다.

    템플릿 매개 변수의 전체 목록은 템플릿 매개 변수를 참조하세요.

프로젝트 템플릿 매개 변수를 대체하려면

  1. SimpleProjectNode.cs 파일에서 AddFileFromTemplate 메서드를 제거합니다.

  2. \Templates\Projects\ConsoleApp\SimpleProject.myproj 파일에서 <RootNamespace> 속성을 찾아 해당 값을 $safeprojectname$로 변경합니다.

    <RootNamespace>$safeprojectname$</RootNamespace>
    
  3. \Templates\Projects\SimpleProject\Program.cs 파일에서 파일 내용을 다음 코드로 바꿉니다.

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;    // Guid
    
    namespace $safeprojectname$
    {
        [Guid("$guid1$")]
        public class $safeprojectname$
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello VSX!!!");
                Console.ReadKey();
            }
        }
    }
    
  4. SimpleProject 프로젝트를 다시 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다.

  5. 새 SimpleProject 콘솔 애플리케이션을 만듭니다. (프로젝트 형식 창에서 SimpleProject를 선택합니다. Visual Studio 설치 템플릿에서 콘솔 애플리케이션을 선택합니다.)

  6. 새로 만든 프로젝트에서 Program.cs를 엽니다. 다음과 같아야 합니다(파일의 GUID 값은 다름).

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices;    // Guid
    
    namespace Console_Application1
    {
        [Guid("00000000-0000-0000-00000000-00000000)"]
        public class Console_Application1
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello VSX!!!");
                Console.ReadKey();
            }
        }
    }
    

프로젝트 속성 페이지 만들기

사용자가 템플릿을 기반으로 하는 프로젝트에서 속성을 보고 변경할 수 있도록 프로젝트 형식에 대한 속성 페이지를 만들 수 있습니다. 이 섹션에서는 구성 독립적 속성 페이지를 만드는 방법을 보여 줍니다. 이 기본 속성 페이지는 속성 그리드를 사용하여 속성 페이지 클래스에서 노출하는 퍼블릭 속성을 표시합니다.

SettingsPage 기본 클래스에서 속성 페이지 클래스를 파생합니다. SettingsPage 클래스에서 제공하는 속성 그리드는 대부분의 기본 데이터 형식을 인식하고 이를 표시하는 방법을 알고 있습니다. 또한 SettingsPage 클래스는 속성 값을 프로젝트 파일에 지속하는 방법을 알고 있습니다.

이 섹션에서 만드는 속성 페이지를 사용하면 다음과 같은 프로젝트 속성을 변경하고 저장할 수 있습니다.

  • AssemblyName

  • OutputType

  • RootNamespace.

  1. SimpleProjectPackage.cs 파일에서 이 ProvideObject 특성을 SimpleProjectPackage 클래스에 추가합니다.

    [ProvideObject(typeof(GeneralPropertyPage))]
    public sealed class SimpleProjectPackage : ProjectPackage
    

    그러면 속성 페이지 클래스 GeneralPropertyPage가 COM에 등록됩니다.

  2. SimpleProjectNode.cs 파일에서 재정의된 다음 두 메서드를 SimpleProjectNode 클래스에 추가합니다.

    protected override Guid[] GetConfigurationIndependentPropertyPages()
    {
        Guid[] result = new Guid[1];
        result[0] = typeof(GeneralPropertyPage).GUID;
        return result;
    }
    protected override Guid[] GetPriorityProjectDesignerPages()
    {
        Guid[] result = new Guid[1];
        result[0] = typeof(GeneralPropertyPage).GUID;
        return result;
    }
    

    이러한 두 메서드는 모두 속성 페이지 GUID 배열을 반환합니다. GeneralPropertyPage GUID는 배열의 유일한 요소이므로 속성 페이지 대화 상자에는 한 페이지만 표시됩니다.

  3. GeneralPropertyPage.cs라는 클래스 파일을 SimpleProject 프로젝트에 추가합니다.

  4. 다음 코드를 사용하여 이 파일의 내용을 바꿉니다.

    using System;
    using System.Runtime.InteropServices;
    using Microsoft.VisualStudio;
    using Microsoft.VisualStudio.Project;
    using System.ComponentModel;
    
    namespace SimpleProject
    {
        [ComVisible(true)]
        [Guid("6BC7046B-B110-40d8-9F23-34263D8D2936")]
        public class GeneralPropertyPage : SettingsPage
        {
            private string assemblyName;
            private OutputType outputType;
            private string defaultNamespace;
    
            public GeneralPropertyPage()
            {
                this.Name = "General";
            }
    
            [Category("AssemblyName")]
            [DisplayName("AssemblyName")]
            [Description("The output file holding assembly metadata.")]
            public string AssemblyName
            {
                get { return this.assemblyName; }
            }
            [Category("Application")]
            [DisplayName("OutputType")]
            [Description("The type of application to build.")]
            public OutputType OutputType
            {
                get { return this.outputType; }
                set { this.outputType = value; this.IsDirty = true; }
            }
            [Category("Application")]
            [DisplayName("DefaultNamespace")]
            [Description("Specifies the default namespace for added items.")]
            public string DefaultNamespace
            {
                get { return this.defaultNamespace; }
                set { this.defaultNamespace = value; this.IsDirty = true; }
            }
    
            protected override void BindProperties()
            {
                this.assemblyName = this.ProjectMgr.GetProjectProperty("AssemblyName", true);
                this.defaultNamespace = this.ProjectMgr.GetProjectProperty("RootNamespace", false);
    
                string outputType = this.ProjectMgr.GetProjectProperty("OutputType", false);
                this.outputType = (OutputType)Enum.Parse(typeof(OutputType), outputType);
            }
    
            protected override int ApplyChanges()
            {
                this.ProjectMgr.SetProjectProperty("AssemblyName", this.assemblyName);
                this.ProjectMgr.SetProjectProperty("OutputType", this.outputType.ToString());
                this.ProjectMgr.SetProjectProperty("RootNamespace", this.defaultNamespace);
                this.IsDirty = false;
    
                return VSConstants.S_OK;
            }
        }
    }
    

    GeneralPropertyPage 클래스는 세 가지 공개 속성인 AssemblyName, OutputType, RootNamespace를 노출합니다. AssemblyName에는 설정 메서드가 없으므로 읽기 전용 속성으로 표시됩니다. OutputType은 열거형 상수이므로 드롭다운 목록으로 표시됩니다.

    SettingsPage 기본 클래스는 속성을 유지하기 위해 ProjectMgr을 제공합니다. BindProperties 메서드는 ProjectMgr을 사용하여 지속되는 속성 값을 검색하고 해당 속성을 설정합니다. ApplyChanges 메서드는 ProjectMgr을 사용하여 속성 값을 가져와 프로젝트 파일에서 지속합니다. 속성 집합 메서드는 속성이 지속되어야 함을 나타내기 위해 IsDirty를 true로 설정합니다. 지속성은 프로젝트 또는 솔루션을 저장할 때 발생합니다.

  5. SimpleProject 솔루션을 다시 빌드하고 디버깅을 시작합니다. 실험적 인스턴스가 나타납니다.

  6. 실험적 인스턴스에서 새 SimpleProject 애플리케이션을 만듭니다.

  7. Visual Studio는 프로젝트 팩터리를 호출하여 Visual Studio 템플릿을 사용하여 프로젝트를 만듭니다. 새 Program.cs 파일이 코드 편집기에서 열립니다.

  8. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭한 다음, 속성을 클릭합니다. 속성 페이지 대화 상자가 표시됩니다.

    Simple Project Property Page

프로젝트 속성 페이지 테스트

이제 속성 값을 수정하고 변경할 수 있는지 여부를 테스트할 수 있습니다.

  1. MyConsoleApplication 속성 페이지 대화 상자에서 DefaultNamespaceMyApplication으로 바꿉니다.

  2. OutputType 속성을 선택한 다음 클래스 라이브러리를 선택합니다.

  3. 적용을 클릭하고 확인을 클릭합니다.

  4. 속성 페이지 대화 상자를 다시 열고 변경 내용이 지속되었는지 확인합니다.

  5. Visual Studio의 실험적 인스턴스를 닫습니다.

  6. 실험적 인스턴스를 다시 엽니다.

  7. 속성 페이지 대화 상자를 다시 열고 변경 내용이 지속되었는지 확인합니다.

  8. Visual Studio의 실험적 인스턴스를 닫습니다. Close the experimental instance