Modello a oggetti di progetti macro

Visual Studio include strumenti per la scrittura e la registrazione di macro. Per informazioni generali sull'argomento, vedere Automazione di operazioni ripetitive tramite macro. In Visual Studio è incluso anche un modello a oggetti programmabile che espone progetti macro. Questo modello contiene sia oggetti estensibilità generale per elementi di progetto indipendenti dal linguaggio che oggetti specifici di macro. Gli oggetti specifici delle macro, contenuti negli spazi dei nomi VSLangProj, VSLangProj2 e VSLangProj80, vengono utilizzati come nei progetti Visual Basic e Visual C#. In questo argomento viene illustrato quanto segue:

Per ulteriori informazioni sugli oggetti VSLangProj, VSLangProj2 e VSLangProj80, vedere Introduzione all'estensibilità dei progetti. Per ulteriori informazioni sull'estensibilità generale, vedere Estensione dell'ambiente Visual Studio.

Accesso agli oggetti estensibilità di un progetto macro

La proprietà MacrosIDE dell'oggetto estensibilità DTE2 consente di accedere ai progetti macro. La proprietà MacrosIDE restituisce un oggetto di tipo DTE2, in modo da consentire l'accesso all'ambiente di sviluppo integrato (IDE, Integrated Development Environment) macro, inclusi soluzioni, progetti, finestre degli strumenti, documenti ed eventi. Nella macro riportata di seguito vengono elencati tutti i moduli in un progetto macro.

' 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 

Progetti macro e oggetti VSLangProj

Nel modello estensibilità generale un progetto è rappresentato dall'oggetto Project generico. L'oggetto Project dispone di una proprietà Object. In un progetto macro, la proprietà Object restituisce un oggetto di tipo VSProject. Poiché il tipo della proprietà Object è oggetto, è necessario eseguire il cast del riferimento sul tipo VSProject. Per controllare il tipo di progetto, è possibile utilizzare l'enumerazione PrjKind o PrjKind2. Se eseguito in una macro, il cast sarà simile al seguente:

' 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

L'oggetto VSProject2 è il contenitore di diversi altri oggetti negli spazi dei nomi VSLangProj, VSLangProj2 e VSLangProj80, inclusi gli oggetti References, Reference, Imports e BuildManager.

Nel modello estensibilità generale un elemento di progetto è rappresentato dall'oggetto generico ProjectItem. L'oggetto ProjectItem dispone di una proprietà Object. In un progetto macro, la proprietà Object restituisce un oggetto di tipo VSProjectItem. Poiché il tipo della proprietà Object è Object, è necessario eseguire il cast del riferimento sul tipo VSProjectItem. Se eseguito in una macro, il cast sarà simile al seguente:

' 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

Elementi specifici di macro degli oggetti VSLangProj

Gli oggetti contenuti negli spazi dei nomi VSLangProj, VSLangProj2 e VSLangProj80 vengono utilizzati per i progetti Visual Basic, Visual C# e macro. Alcuni valori di enumerazione sono specifici dei progetti macro. Per i progetti macro, l'enumerazione PrjKind presenta il valore prjKindVSAProject. Per l'estensione degli elementi nella finestra Proprietà l'enumerazione PrjBrowseObjectCATID presenta i valori elencati di seguito:

prjCATIDVSAFolderBrowseObject

prjCATIDVSAFileBrowseObject

prjCATIDVSAConfig

prjCATIDVSAReferenceBrowseObject

Comportamento specifico di macro degli oggetti VSLangProj

Il comportamento degli oggetti VSLangProj, VSLangProj2 e VSLangProj80 varia leggermente tra i progetti Visual Basic, Visual C# e macro. Grazie a questa differenza, un oggetto rappresenta sempre esattamente il tipo di progetto. Molte delle proprietà e dei metodi degli oggetti non sono supportati per i progetti macro, come illustrato di seguito.

VSProject   Questo oggetto rappresenta i dettagli specifici di macro di un progetto.

  • BuildManager Questa proprietà non è supportata e il tentativo di accesso ad essa genera un'eccezione.

  • CopyProject Questo metodo non è supportato e una chiamata ad esso genera un'eccezione.

  • WorkOffline Questa proprietà restituisce sempre False. Il tentativo di impostare questa proprietà non genera un'eccezione, tuttavia la proprietà non può essere impostata su True.

VSProjectItem   Questo oggetto rappresenta i dettagli specifici di macro di un elemento di progetto.

  • RunCustomTool Questo metodo non è supportato; la chiamata al metodo genera un'eccezione.

ProjectProperties3   Queste proprietà descrivono i progetti Visual Basic, Visual C# e macro. Le proprietà elencate di seguito non sono supportate.

ActiveFileSharePath

FullPath

ApplicationIcon

LinkRepair

AssemblyName

OfflineURL

AssemblyKeyContainerName

OutputFileName

AssemblyOriginatorKeyFile

OutputType

AssemblyOriginatorKeyMode

URL

DefaultClientScript

WebAccessMethod

DefaultHTMLPageLayout

WebServer

DefaultTargetSchema

WebServerVersion

ActiveFileSharePath

 

FileProperties2   Queste proprietà descrivono gli elementi dei progetti Visual Basic, Visual C# e macro. Le proprietà file elencate di seguito non sono supportate e il tentativo di accedervi genererà un errore.

Author

FullPath

BuildAction

IsDependentFile

IsCustomToolOutput

IsDesignTimeBuildInput

CustomToolNamespace

IsLink

CustomToolOutput

HTMLTitle

DateCreated

LocalPath

DateModified

ModifiedBy

Extension

SubType

FileName

URL

Le proprietà FolderProperties2 elencate di seguito non sono supportate e il tentativo di accedere ad esse genererà un errore.

FullPath

URL

LocalPath

 

ProjectConfigurationProperties3   Queste proprietà descrivono le configurazioni di distribuzione dei progetti Visual Basic, Visual C# e macro. Le proprietà file elencate di seguito non sono supportate e il tentativo di accedervi genererà un errore.

AllowUnsafeBlocks

IntermediatePath

BaseAddress

OutputPath

CheckForOverflowUnderflow

StartAction

DocumentationFile

StartArguments

EnableASPXDebugging

StartProgram

EnableUnmanagedDebugging

StartURL

IncrementalBuild

StartWithIE

Reference3   Questo oggetto rappresenta un riferimento a un progetto. La proprietà riportata di seguito non è supportata e se si tenta di accedervi verrà generato un errore.

References   Questo oggetto rappresenta un insieme di tutti i riferimenti nel progetto macro. I metodi riportati di seguito non sono supportati e se vengono chiamati verrà generato un errore.

AddActiveX

AddProject

Vedere anche

Riferimenti

MacrosIDE

VSProject

Imports

VSProjectItem

BuildManager

VSProject2

Reference3

Concetti

Introduzione all'estensibilità dei progetti