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:
Accesso agli oggetti estensibilità di un progetto macro
Progetti macro e oggetti VSProject e VSProject2
Elementi specifici delle macro degli oggetti VSLangProj, VSLangProj2 e VSLangProj80
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:
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.
|
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.
Le proprietà FolderProperties2 elencate di seguito non sono supportate e il tentativo di accedere ad esse genererà un errore.
|
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.
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.