매크로 프로젝트 개체 모델
업데이트: 2007년 11월
Visual Studio에는 매크로를 작성하고 기록하기 위한 도구가 포함되어 있습니다. 이러한 도구에 대한 개요는 매크로를 사용하여 반복 작업 자동화를 참조하십시오. Visual Studio에는 매크로 프로젝트를 노출하는 프로그래밍 가능한 개체 모델도 포함되어 있습니다. 이 모델에는 언어 중립 프로젝트 항목을 위한 일반 확장성 개체와 매크로 관련 개체가 모두 들어 있습니다. VSLangProj, VSLangProj2 및 VSLangProj80 네임스페이스에 있는 매크로별 개체는 Visual Basic, Visual C# 및 Visual J# 프로젝트에서만 사용됩니다. 이 항목에서는 다음과 같은 주제를 다룹니다.
매크로 프로젝트의 확장성 개체 액세스
매크로 프로젝트와 VSProject 및 VSProject2 개체
VSLangProj, VSLangProj2 및 VSLangProj80 개체의 매크로 관련 요소
VSLangProj, VSLangProj2 및 VSLangProj80 개체에 대한 자세한 내용은 프로젝트 확장성 소개를 참조하십시오. 일반 확장성에 대한 자세한 내용은 Visual Studio 환경 확장을 참조하십시오.
매크로 프로젝트의 확장성 개체 액세스
DTE2 확장성 개체의 MacrosIDE 속성을 통해 매크로 프로젝트에 액세스합니다. MacrosIDE 속성은 솔루션, 프로젝트, 도구 창, 문서, 이벤트를 비롯한 매크로 IDE(통합 개발 환경)에 액세스할 수 있도록 DTE2 형식의 개체를 반환합니다. 아래 매크로에서는 매크로 프로젝트에 있는 모든 모듈을 나열합니다.
' Macro editor
Public Sub FindMacros()
Dim macroproject As Project
' Retrieve the first project in the Macros IDE.
macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)
' Display the project's name.
MsgBox(macroproject.Name)
' Display each project item (module).
Dim projitem As ProjectItem
For Each projitem In macroproject.ProjectItems
MsgBox(projitem.Name)
Next
End Sub
매크로 프로젝트 및 VSLangProj 개체
일반 확장성 모델에서 프로젝트는 일반 Project 개체로 표시됩니다. Project 개체에는 Object 속성이 있습니다. 매크로 프로젝트에서 Object 속성은 VSProject 형식의 개체를 반환합니다. Object 속성의 형식은 Object이므로 참조를 VSProject 형식으로 캐스팅해야 합니다. case 문을 만들기 전에 PrjKind 또는 PrjKind2 열거형을 사용하여 프로젝트 형식을 확인할 수 있습니다. 매크로에서 수행할 경우 캐스팅은 아래와 같습니다.
' Macro editor
Public Sub CastToVSProject()
' Retrieve the general extensibility object.
Dim macroproject As Project
macroproject = DTE.MacrosIDE.Solution.Projects.Item(1)
' Cast for the macro specific information.
Dim vsproj As VSLangProj.VSProject
' Can test type of project before cast.
If (macroproject.Kind = VSLangProj.PrjKind.prjKindVSAProject) Then
vsproj = CType(macroproject.Object, VSLangProj.VSProject)
End If
MsgBox(vsproj.Project.Name)
End Sub
VSProject2 개체는 References, Reference, Imports 및 BuildManager 개체를 비롯하여 VSLangProj, VSLangProj2 및 VSLangProj80 네임스페이스에 있는 다른 여러 가지 개체의 컨테이너입니다.
일반 확장성 모델에서 프로젝트 항목은 일반 ProjectItem 개체로 표시됩니다. ProjectItem 개체에는 Object 속성이 있습니다. 매크로 프로젝트에서 Object 속성은 VSProjectItem 형식의 개체를 반환합니다. Object 속성의 형식은 Object이므로 참조를 VSProjectItem 형식으로 캐스팅해야 합니다. 매크로에서 수행할 경우 캐스팅은 아래와 같습니다.
' Macro editor
Public Sub CastToVSProjectItem()
Dim projitem As ProjectItem
Dim vsitem As VSLangProj.VSProjectItem
For Each projitem In _
DTE.MacrosIDE.Solution.Projects.Item(1).ProjectItems
vsitem = CType(projitem.Object, VSLangProj.VSProjectItem)
MsgBox(vsitem.ProjectItem.Name)
Next
End Sub
VSLangProj 개체의 매크로 관련 요소
VSLangProj, VSLangProj2 및 VSLangProj80 네임스페이스에 있는 개체는 Visual Basic, Visual C#, Visual J# 및 매크로 프로젝트에 사용됩니다. 특별히 매크로 프로젝트를 위해 사용되는 몇 가지 열거 값이 있습니다. PrjKind 열거형에는 매크로 프로젝트에 대한 값인 prjKindVSAProject가 있습니다. PrjBrowseObjectCATID 열거형에는 속성 창에서 항목을 확장하기 위한 다음과 같은 값이 있습니다.
VSLangProj 개체의 매크로 관련 동작
VSLangProj, VSLangProj2 및 VSLangProj80 개체의 동작은 Visual Basic, Visual C#, Visual J# 및 매크로 프로젝트 간에 조금씩 다릅니다. 이러한 차이점은 개체에서 프로젝트 형식을 정확하게 표시하기 위한 것입니다. 아래에 나열된 것처럼 개체의 많은 속성과 메서드가 매크로 프로젝트에 대해 지원되지 않습니다.
VSProject 이 개체는 프로젝트의 매크로 관련 세부 사항을 나타냅니다.
BuildManager 이 속성은 지원되지 않으며 이 속성에 액세스하면 예외가 발생합니다.
CopyProject 이 메서드는 지원되지 않으며 이 메서드를 호출하면 예외가 발생합니다.
WorkOffline 이 속성은 항상 False를 반환합니다. 이 속성을 설정할 때 예외는 발생하지 않지만 True로 설정할 수 없습니다.
VSProjectItem 이 개체는 프로젝트 항목의 매크로 관련 세부 사항을 나타냅니다.
- RunCustomTool 이 메서드는 지원되지 않으며 이 메서드를 호출하면 예외가 발생합니다.
ProjectProperties3 이러한 속성은 Visual Basic, Visual C#, Visual J# 및 매크로 프로젝트를 설명합니다. 아래 속성은 지원되지 않습니다.
|
FileProperties2 이러한 속성은 Visual Basic, Visual C#, Visual J# 및 매크로 프로젝트 항목을 설명합니다. 아래의 파일 속성은 지원되지 않으며 이러한 속성에 액세스하면 오류가 발생합니다.
아래의 FolderProperties2는 지원되지 않으며 여기에 액세스하면 오류가 발생합니다.
|
ProjectConfigurationProperties3 이러한 속성은 Visual Basic, Visual C#, Visual J# 및 매크로 배포 구성을 설명합니다. 아래의 파일 속성은 지원되지 않으며 이러한 속성에 액세스하면 오류가 발생합니다.
Reference3 이 개체는 한 개의 프로젝트 참조를 나타냅니다. 아래의 속성은 지원되지 않으며 이 속성에 액세스하면 예외가 발생합니다.
References 이 개체는 매크로 프로젝트에 있는 모든 참조의 컬렉션을 나타냅니다. 아래의 메서드는 지원되지 않으며 이러한 메서드를 호출하면 예외가 발생합니다.