Introduzione all'extensibility dei progetti
Aggiornamento: novembre 2007
Per disporre del modello a oggetti, è sufficiente aggiungere al progetto i riferimenti agli assembly VSLangProj.dll: VSLangProj.dll, VSLangProj2.dll, VSLangProj80.dll e VSLangProj90.dll. Per ulteriori informazioni, vedere Procedura: aggiungere o rimuovere riferimenti in Visual Studio (Visual Basic). Il modello a oggetti è quindi disponibile per macro, componenti aggiuntivi e qualsiasi tipo di progetto che richieda l'estensione o l'automatizzazione dell'ambiente di sviluppo integrato (IDE, Integrated Development Environment). Le macro vengono scritte nell'IDE macro mediante Visual Basic. Gli esempi contenuti negli argomenti sono scritti nei linguaggi Visual Basic e Visual C#. Per ulteriori informazioni su come eseguire gli esempi, vedere Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione. I componenti aggiuntivi possono essere scritti in qualsiasi linguaggio incluso in Visual Studio, ad esempio Visual Basic, Visual C#, Visual C++ e Visual J#. Gli argomenti di riferimento per i membri VSLangProj, VSLangProj2, VSLangProj80 e VslangProj90 includono la sintassi per ognuno di questi linguaggi. Per una descrizione dei tipi di progetto di automazione e delle funzionalità di automazione, vedere Creazione di componenti aggiuntivi e di procedure guidate.
Spazio dei nomi VSLangProj, VSLangProj2, VSLangProj80 e VSLangProj90
Questi spazi dei nomi contengono tutte le classi, le interfacce e le enumerazioni per i progetti Visual Basic, Visual C# e Visual J#. Per un elenco completo degli oggetti nello spazio dei nomi, vedere Modello a oggetti Extensibility per progetti di Visual Basic e Visual C#.
Possibile errore nell'utilizzo di assembly VSLangProj con l'assembly EnvDTE
Se si crea un progetto che fa riferimento a uno o più assembly VSLangProj e all'assembly EnvDTE, è possibile che in fase di esecuzione si verifichi l'errore riportato di seguito:
"Eccezione non gestita: System.IO.FileNotFoundException: Errore durante il caricamento del file 'EnvDTE, Version=7.0.3300.0"
Questo errore è dovuto a un conflitto di risoluzione dei tipi in fase di esecuzione. La versione di EnvDTE inclusa in Visual Studio 2005 è la 8.0.xx, ma il riferimento della configurazione del progetto cerca una versione precedente di questo assembly, ovvero la versione 7.0.xx. Per correggere il problema, è necessario aggiungere un reindirizzamento dell'associazione per la versione più recente di EnvDTE al file di configurazione (config) del progetto. Ciò consente di caricare in Visual Studio la versione più recente di EnvDTE impedendo l'errore.
A tale scopo, aggiungere un "File di configurazione dell'applicazione" al progetto e sostituirne il contenuto con quanto riportato di seguito:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-
com:asm.v1" appliesTo="v2.0.50318">
<dependentAssembly>
<assemblyIdentity name="EnvDTE" publicKeyToken=
"b03f5f7f11d50a3a"/>
<bindingRedirect oldVersion="7.0.3300.0"
newVersion="8.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Oggetto VSProject2
Questo oggetto consente di accedere ad altri oggetti all'interno del modello extensibility. L'oggetto DTE è l'oggetto di primo livello nel modello di automazione di Visual Studio. Nel modello extensibility generale un progetto è rappresentato dall'oggetto generico Project generico. L'oggetto Project dispone di una proprietà Object. Il tipo di questa proprietà è determinato in fase di esecuzione dal linguaggio del progetto. In un progetto Visual Basic, Visual C# o Visual J# la proprietà Object restituisce un oggetto di tipo VSProject2. Poiché il tipo della proprietà Object è Object, è necessario eseguire il cast del riferimento sul tipo VSProject2. In una macro, se il primo progetto è Visual Basic il cast sarà simile a quello riportato di seguito:
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Dim proj As EnvDTE.Project
Dim vsproject As VSLangProj80.VSProject2
proj = DTE.Solution.Projects.Item(1)
vsproject = CType(proj.Object, VSLangProj80.VSProject2)
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
EnvDTE.Project proj;
VSLangProj80.VSproject2 vsproject;
proj = DTE2.Solution.Projects.Item(1);
vsproject = (VSLangProj80.VSProject2)proj;
Dopo aver impostato un riferimento all'elemento VSProject2, è possibile modificare le proprietà, le configurazioni, i file, le cartelle, le istruzioni Imports e i riferimenti del progetto.
Per ulteriori informazioni, vedere Introduzione all'oggetto VSProject2.
Oggetti References e Reference
La proprietà References, presente nell'oggetto VSProject2, contiene un insieme di oggetti Reference3. L'oggetto Reference3 rappresenta un riferimento al progetto ed è principalmente un oggetto in sola lettura che supporta un metodo Remove. L'oggetto References supporta l'aggiunta di riferimenti, ad esempio COM, assembly .NET, ActiveX e altri progetti, nonché la generazione di eventi, ad esempio aggiunta, rimozione e modifica di riferimenti.
L'oggetto References non contiene i riferimenti Web di un progetto. I riferimenti Web di un progetto possono essere recuperati accedendo alla proprietà ProjectItems della proprietà WebReferencesFolder.
Per ulteriori informazioni ed esempi di codice, vedere gli oggetti Reference e Reference3, l'insieme References, la proprietà References e la proprietà WebReferencesFolder.
Oggetto Imports
La proprietà Imports contenuta nell'oggetto VSProject2 mantiene un insieme di istruzioni Imports applicabili a un intero progetto Visual Basic. Se un'istruzione Imports viene aggiunta a questo insieme, l'istruzione Imports corrispondente, ad esempio Imports VSLangProj, non dovrà essere aggiunta al file di codice. Questo oggetto supporta l'aggiunta e la rimozione di istruzioni Imports e la generazione di eventi in risposta all'aggiunta e alla rimozione di istruzioni. In un progetto Visual C# non è disponibile alcun equivalente e la proprietà VSProject2.Imports restituisce Nothing o null se applicata a un progetto Visual C#. Per ulteriori informazioni, vedere Imports.
Oggetti VSProjectItem e BuildManager
L'oggetto VSProjectItem è il corrispondente dell'elemento di progetto dell'oggetto VSProject2. Nel modello extensibility generale un elemento di progetto è rappresentato dall'oggetto generico ProjectItem. La proprietà Object è di tipo Object e in un progetto Visual Basic o Visual C# il tipo di questa proprietà è VSProjectItem. In una macro il cast dell'oggetto sul tipo VSProjectItem produrrà il seguente risultato:
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj
Imports VSLangProj2
Imports VSLangProj80
Imports VSLangProj90
Dim pi As VSProjectItem
pi = CType(DTE2.Solution.Projects.Item(1).ProjectItems.Item(1)._
Object, VSProjectItem)
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using VSLangProj90;
EnvDTE.Project proj;
VSLangProj.VSProjectItem pi;
Pi = (VSProject2)DTE2.Solution.Projects.Item(1).ProjectItems.Item(1).
Object;
L'oggetto VSProjectItem contiene proprietà che forniscono il collegamento al progetto e all'elemento di progetto padre, nonché un metodo che impone l'esecuzione di uno strumento personalizzato su tale elemento. L'oggetto BuildManager gestisce output di strumenti personalizzati. Per ulteriori informazioni, vedere il metodo RunCustomTool, Introduzione all'oggetto BuildManager, l'oggetto VSProjectItem e l'oggetto BuildManager.
Proprietà Properties
Il modello extensibility generale dispone di una proprietà Properties in tre oggetti:
Oggetto Project Le proprietà in questo oggetto equivalgono alle proprietà disponibili nella scheda Proprietà comuni della finestra di dialogo Pagine delle proprietà del progetto nell'IDE.
Oggetto Configuration Le proprietà in questo oggetto equivalgono alle proprietà disponibili nella scheda Proprietà di configurazione della finestra di dialogo Pagine delle proprietà del progetto nell'IDE.
Oggetto ProjectItem. Le proprietà in questo oggetto equivalgono alle proprietà disponibili nella finestra Proprietà quando in Esplora soluzioni è selezionato un elemento di progetto.
In ogni caso la proprietà Properties è data da un insieme di oggetti di tipo Property. È possibile ottenere un oggetto Property dall'insieme specificando l'indice in base 1 della proprietà o il relativo nome. Il contenuto dell'insieme dipende dal linguaggio. Nel caso di elementi di progetto, il contenuto dipende anche dal fatto che l'elemento sia un file o una cartella.
Vedere anche
Concetti
Informazioni sull'automazione di Visual Studio