Introduzione all'estensibilità dei progetti

Per disporre del modello a oggetti, è sufficiente aggiungere al progetto i riferimenti agli assembly VSLangProj.dll: VSLangProj.dll, VSLangProj2.dll, VSLangProj80.dll, VSLangProj90a.dll e VSLangProj100.dll.Per ulteriori informazioni, vedere Procedura: aggiungere o rimuovere riferimenti utilizzando la finestra di dialogo Aggiungi riferimento.Ciò significa che il modello a oggetti è disponibile per i componenti aggiuntivi e qualsiasi tipo di progetto che deve estendere e automatizzare l'ide.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# e Visual C++.Gli argomenti di riferimento per i membri VSLangProj, VSLangProj2VSLangProj80, VslangProj90 e VslangProj100 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.

Spazi dei nomi VSLangProj

Questi spazi dei nomi contengono tutte le classi, le interfacce e le enumerazioni per i progetti Visual Basic e Visual C#.Per un elenco completo degli oggetti nello spazio dei nomi, vedere Modello a oggetti estensibilità 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 estensibilità.L'oggetto DTE è l'oggetto di primo livello nel modello di automazione di Visual Studio.Nel modello estensibilità 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 o Visual C#, 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.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 una raccolta 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, la raccolta References, la proprietà References e la proprietà WebReferencesFolder.

Oggetto Imports

La proprietà Imports contenuta nell'oggetto VSProject2 mantiene una raccolta di istruzioni Imports applicabili a un intero progetto Visual Basic.Se un'istruzione Imports viene aggiunta a questa raccolta, 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 estensibilità 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.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 estensibilità 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 una raccolta di oggetti di tipo Property.È possibile ottenere un oggetto Property dalla raccolta specificando l'indice in base 1 della proprietà o il relativo nome.Il contenuto della raccolta 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

Altre risorse

Creazione di componenti aggiuntivi e di procedure guidate