Condividi tramite


Configurazione del progetto per l'output

Ogni configurazione può supportare un set di processi di compilazione che producono elementi di output, ad esempio file eseguibili o di risorse. Questi elementi di output sono privati per l'utente e possono essere inseriti in gruppi che collegano tipi correlati di output, ad esempio file eseguibili (.exe, .dll, lib) e file di origine (file con estensione idl, h).

Gli elementi di output possono essere resi disponibili tramite i IVsOutput2 metodi ed enumerati con i IVsEnumOutputs metodi . Quando si desidera raggruppare gli elementi di output, il progetto deve implementare anche l'interfaccia IVsOutputGroup .

Il costrutto sviluppato dall'implementazione IVsOutputGroup consente ai progetti di raggruppare gli output in base all'utilizzo. Ad esempio, una DLL potrebbe essere raggruppata con il relativo database di programma (PDB).

Nota

Un file PDB contiene informazioni di debug e viene creato quando viene specificata l'opzione "Genera informazioni di debug" quando si compila il .dll o .exe. Il file con estensione pdb viene in genere generato solo per la configurazione del progetto di debug.

Il progetto deve restituire lo stesso numero di gruppi per ogni configurazione supportata, anche se il numero di output contenuti in un gruppo può variare dalla configurazione alla configurazione. Ad esempio, la DLL del progetto Matt potrebbe includere mattd.dll e mattd.pdb nella configurazione di debug, ma includere solo matt.dll nella configurazione retail.

I gruppi hanno anche le stesse informazioni sull'identificatore, ad esempio il nome canonico, il nome visualizzato e le informazioni sul gruppo, dalla configurazione alla configurazione all'interno di un progetto. Questa coerenza consente la distribuzione e la creazione di pacchetti per continuare a funzionare anche se le configurazioni cambiano.

I gruppi possono anche avere un output chiave che consente ai collegamenti di creazione di pacchetti di puntare a qualcosa di significativo. Qualsiasi gruppo potrebbe essere vuoto in una determinata configurazione, quindi non deve essere fatta alcuna ipotesi sulle dimensioni di un gruppo. Le dimensioni (numero di output) di ogni gruppo in qualsiasi configurazione possono essere diverse dalle dimensioni di un altro gruppo nella stessa configurazione. Può anche essere diverso dalle dimensioni dello stesso gruppo in un'altra configurazione.

Grafico Gruppi di output

Gruppi di output

L'uso principale dell'interfaccia consiste nel fornire l'accesso IVsProjectCfg agli oggetti di gestione di compilazione, distribuzione ed esecuzione del debug e consentire ai progetti la libertà di raggruppare gli output. Per altre informazioni sull'uso di questa interfaccia, vedere Project Configuration Object.

Nel diagramma precedente, Group Built ha un output chiave tra le configurazioni (bD.exe o b.exe) in modo che l'utente possa creare un collegamento a Compilazione e sapere che il collegamento funzionerà indipendentemente dalla configurazione distribuita. L'origine gruppo non ha un output chiave, quindi l'utente non può creare un collegamento. Se il gruppo di debug compilato ha un output chiave, ma il gruppo di vendita al dettaglio compilato non lo fa, si tratta di un'implementazione errata. Segue, quindi, che se una configurazione ha un gruppo che non contiene output e, di conseguenza, nessun file di chiave, altre configurazioni con tale gruppo che contengono output non possono avere file di chiave. Gli editor del programma di installazione presuppongono che i nomi canonici e i nomi visualizzati dei gruppi, oltre all'esistenza di un file di chiave, non cambino in base alle configurazioni.

Si noti che se un progetto dispone di un oggetto IVsOutputGroup che non vuole creare un pacchetto o distribuirlo, è sufficiente non inserire tale output in un gruppo. L'output può comunque essere enumerato normalmente implementando il EnumOutputs metodo che restituisce tutti gli output di una configurazione indipendentemente dal raggruppamento.

Per altre informazioni, vedere l'implementazione di IVsOutputGroup nell'esempio di progetto personalizzato in MPF for Projects.

Vedi anche