Servizio immagini native
Aggiornamento: novembre 2007
Il servizio immagini native è un servizio Windows che esegue automaticamente la generazione e la gestione delle immagini native. Questo servizio consente allo sviluppatore di differire le azioni di installazione e aggiornamento delle immagini native in modo che vengano eseguite nei periodi di inattività del computer.
Il servizio immagini native viene in genere avviato dal programma di installazione di un'applicazione o di un aggiornamento. Per le azioni con priorità 3, il servizio viene eseguito durante il periodo di inattività del computer. Lo stato del servizio viene salvato automaticamente e, se necessario, l'esecuzione può riprendere anche dopo il riavvio del computer. È supportato l'accodamento di più compilazioni di immagini.
Il servizio interagisce anche con il comando Ngen.exe manuale. I comandi manuali hanno priorità sull'attività in background.
Nota
In Windows Vista il nome visualizzato per il servizio immagini native è "Microsoft.NET Framework NGEN v2.0.50727_X86" o "Microsoft.NET Framework NGEN v2.0.50727_X64". In tutte le versioni precedenti di Microsoft Windows il nome è ".NET Runtime Optimization Service v2.0.50727_X86" o ".NET Runtime Optimization Service v2.0.50727_X64".
Avvio delle azioni differite
Prima di iniziare un'azione di installazione o aggiornamento, è opportuno sospendere il servizio. In questo modo si ha la garanzia che il servizio non venga eseguito durante la copia dei file o l'inserimento degli assembly nella Global Assembly Cache. Per sospendere l'esecuzione, utilizzare il seguente comando di Ngen.exe:
ngen queue pause
Quando tutte le azioni differite sono state accodate, il seguente comando consente di riprendere l'esecuzione del servizio:
ngen queue continue
Per differire la generazione delle immagini native durante l'installazione di una nuova applicazione o l'aggiornamento di un componente condiviso, utilizzare l'opzione /queue con le azioni install o update. Le seguenti stringhe di comando Ngen.exe determinano l'installazione di un'immagine nativa per un componente condiviso e l'esecuzione di un aggiornamento di tutte le radici che possono essere state modificate:
ngen install MyComponent /queue
ngen update /queue
L'azione update rigenera tutte le immagini native che sono state invalidate, non solo quelle che utilizzano MyComponent.
Se l'applicazione è costituita da più radici, è possibile controllare la priorità delle azioni differite. I comandi riportati di seguito consentono di accodare l'installazione di tre radici. Assembly1 viene installata per prima, senza attendere l'inattività del computer. Anche Assembly2 viene installata senza attendere l'inattività, ma dopo il completamento delle azioni con priorità 1. Assembly3 viene invece installata quando il servizio rileva lo stato di inattività del computer.
ngen install Assembly1 /queue:1
ngen install Assembly2 /queue:2
ngen install Assembly3 /queue:3
È possibile imporre l'esecuzione simultanea delle azioni accodate utilizzando executeQueuedItems. Se si specifica la priorità facoltativa, l'esecuzione simultanea ha effetto sulle azioni accodate con priorità uguale o inferiore. La priorità predefinita è 3. Di conseguenza, il comando Ngen.exe riportato di seguito elabora immediatamente tutte le azioni accodate e non restituisce il controllo finché non sono completate:
ngen executeQueuedItems
I comandi sincroni vengono eseguiti da Ngen.exe e non utilizzano il servizio immagini native. È possibile eseguire azioni mediante Ngen.exe mentre il servizio immagini native è in esecuzione.
Chiusura del servizio
Dopo l'avvio mediante l'esecuzione di un comando Ngen.exe con l'opzione /queue, il servizio viene eseguito in background finché tutte le azioni non sono state completate. Lo stato del servizio viene salvato automaticamente, in modo che l'esecuzione del servizio possa riprendere anche dopo il riavvio del computer, se necessario. Quando viene rilevato che non sono più presenti azioni accodate, lo stato del servizio viene ripristinato per evitare che venga riavviato al successivo avvio del computer, quindi il servizio viene chiuso.
Interazione del servizio con i client
In .NET Framework versione 2.0 l'interazione con il servizio immagini native avviene solo tramite lo strumento da riga di comando Ngen.exe. Utilizzare questo strumento negli script di installazione per accodare le azioni per il servizio immagini native e interagire con il servizio.