Share via


Elementi di un modello di progetto

Le interfacce e le implementazioni di tutti i progetti in Visual Studio condividono una struttura di base: il modello di progetto per il tipo di progetto. Nel modello di progetto, ovvero il VSPackage in fase di sviluppo, si creano oggetti conformi alle decisioni di progettazione e si collabora con le funzionalità globali fornite dall'IDE. Anche se si controlla il modo in cui un elemento di progetto viene salvato in modo permanente, ad esempio, non si controlla la notifica che un file deve essere salvato in modo permanente. Quando un utente posiziona lo stato attivo su un elemento di progetto aperto e sceglie Salva nel menu File sulla barra dei menu di Visual Studio, il codice del tipo di progetto deve intercettare il comando dall'IDE, salvare in modo permanente il file e inviare una notifica all'IDE che il file non viene più modificato.

Il pacchetto VSPackage interagisce con l'IDE tramite servizi che forniscono l'accesso alle interfacce dell'IDE. Ad esempio, tramite servizi specifici, è possibile monitorare e instradare i comandi e fornire informazioni di contesto per le selezioni effettuate nel progetto. Tutte le funzionalità IDE globali necessarie per il pacchetto VSPackage vengono fornite dai servizi. Per altre informazioni sui servizi, vedere Procedura: Ottenere un servizio.

Altre considerazioni sull'implementazione:

  • Un singolo modello di progetto può contenere più di un tipo di progetto.

  • I tipi di progetto e le factory di progetto partecipanti vengono registrati in modo indipendente con GUID.

  • Ogni progetto deve avere un file modello o una procedura guidata per inizializzare il nuovo file di progetto quando un utente crea un nuovo progetto tramite l'interfaccia utente di Visual Studio. Ad esempio, i modelli di Visual C++ inizializzano i file con estensione vcproj.

    La figura seguente illustra le interfacce principali, i servizi e gli oggetti che compongono un'implementazione tipica del progetto. È possibile usare l'helper dell'applicazione, HierUtil7, per creare gli oggetti sottostanti e altri boilerplate di programmazione. Per altre informazioni sull'helper HierUtil7 dell'applicazione, vedere Usare classi di progetto HierUtil7 per implementare un tipo di progetto (C++).

    Visual Studio project model graphic Modello di progetto

    Per altre informazioni sulle interfacce e i servizi elencati nel diagramma precedente e altre interfacce facoltative non incluse nel diagramma, vedere Componenti di base del modello di Project.

    I progetti possono supportare i comandi e pertanto devono implementare l'interfaccia IOleCommandTarget per partecipare al routing dei comandi tramite i GUID del contesto del comando.