Introduzione all'oggetto BuildManager
L'oggetto BuildManager è utilizzato da altri sviluppatori per gestire i file PE (Portable Executable). I file PE sono compilati da strumenti personalizzati che indicano al sistema del progetto che l'output deve essere compilato in un file PE temporaneo.
L'oggetto BuildManager e gli strumenti personalizzati vengono utilizzati nello sviluppo delle finestre di progettazione visive. Una finestra di progettazione di Visual Studio fornisce un'interfaccia utente grafica per un file. Per creare l'interfaccia utente, è necessario poter creare un'istanza dei tipi descritti nei file degli elementi di progetto dalla finestra di progettazione. I file PE temporanei generati da strumenti personalizzati sono file assembly che contengono i tipi descritti negli elementi di progetto generati da uno strumento personalizzato. Spesso le finestre di progettazione e gli strumenti personalizzati vengono quindi utilizzati insieme per generare l'interfaccia utente in fase di progettazione. Un buon esempio è rappresentato dallo strumento personalizzato che genera classi da un file XSD. Dalle finestre di progettazione visive deve talvolta essere possibile creare istanze delle classi generate allo scopo di individuare quanto fornito da un insieme di dati e fornire l'interfaccia utente per il supporto in fase di progettazione di funzionalità quali l'associazione dati.
Strumenti personalizzati
Uno strumento personalizzato acquisisce come input il contenuto di un file dell'elemento del progetto e genera un nuovo file dell'elemento del progetto che può essere compilato successivamente. Di seguito è riportata la sequenza tipica degli eventi.
La proprietà CustomTool viene impostata per un elemento del progetto.
Lo strumento personalizzato viene eseguito utilizzando come input il contenuto dell'elemento del progetto. Se lo strumento personalizzato non riconosce l'input, gli errori rilevati dallo strumento personalizzato verranno segnalati all'utente. Per ulteriori informazioni, vedere RunCustomTool.
Unitamente ai riferimenti al progetto, l'output dello strumento personalizzato viene compilato in un file PE temporaneo.
Nota
L'output viene compilato in un file PE temporaneo solo se lo strumento personalizzato viene registrato con il valore del Registro di sistema GeneratesDesignTimeOutput impostato su 1.
Per una descrizione del file PE chiamare il metodo BuildDesignTimeOutput dell'oggetto BuildManager.
L'output del file PE temporaneo restituito da BuildDesignTimeOutput è il seguente:
<root> <Application private_binpath="full output path to temporary PE, excluding the name"/> <Assembly codebase = "filename of the temporary PE, e.g., sample.dll"" name = "name of the temporary PE == filename without the extension, e.g., "sample"" version = "always "0.0.0.0"" snapshot_id = "unique ID number" replaceable = "currently unused; always set to "True"" /> </root>
Oggetto BuildManager
L'oggetto BuildManager fornisce l'accesso ai file PE temporanei. La proprietà DesignTimeOutputMonikers è una matrice di tutti i moniker PE (nomi) del progetto. Il sistema del progetto assegna i moniker dei file PE in base alla gerarchia del progetto. Se ad esempio un file SomeData.xsd di progettazione XML nella cartella Folder1 del progetto Project1 genera il file di output SomeData.cs, il moniker sarà Project1\Folder1\SomeData.cs. Il metodo BuildDesignTimeOutput utilizza un moniker come un parametro e restituisce una descrizione del file PE in una stringa XML.
L'evento DesignTimeOutputDeleted dell'oggetto BuildManagerEventsClass viene generato quando un file dell'elemento del progetto che genera un file PE viene eliminato dal progetto. L'evento DesignTimeOutputDirty viene generato ogni volta che viene eseguito uno strumento personalizzato (generatore di file singolo) che genera un file PE temporaneo. Tutti i generatori di file singolo di un progetto vengono eseguiti quando:
Un progetto viene aperto immediatamente dopo un aggiornamento.
È stato modificato lo spazio dei nomi di primo livello.
I generatori di file singoli vengono eseguiti quando:
Il documento viene salvato con un generatore di file singolo, ad esempio un dataset.
Il documento con un generatore di file singolo è aperto ed è stato modificato e l'utente passa a un altro documento in Visual Studio.
Un file del progetto con un generatore di file singolo è stato rimosso o spostato.
L'utente ha simbolicamente rinominato un tipo utilizzato nel file di output di un generatore di file singolo. Se ad esempio l'utente richiama la ridenominazione simbolica sul tipo "Type" e il tipo è utilizzato in dataset1.vb (l'output di un dataset), il generatore di file singolo verrà richiamato al completamento dell'operazione di ridenominazione.
Fare clic sul collegamento nella tabella riportata di seguito per informazioni su come utilizzare l'oggetto BuildManager a scopo di programmazione.
Per |
Vedere |
---|---|
Visualizzare i moniker per i file PE temporanei e per monitorare BuildManagerEvents. |
Procedura: utilizzare gli oggetti BuildManager e BuildManagerEvents |
Fornitori di terze parti
È anche possibile accedere a gran parte della funzionalità dell'oggetto BuildManager attraverso l'interfaccia ITypeResolutionService. Tuttavia, i fornitori di terze parti che necessitano di una finestra di progettazione completa devono utilizzare la proprietà DesignTimeOutputMonikers e il metodo BuildDesignTimeOutput. Per ulteriori informazioni, vedere Informazioni sull'automazione di Visual Studio.