Domanda

Vorrei affidabile auto-install miei assemblee di applicazione nel GAC quando compilo la mia applicazione utilizzando Visual Studio. Ho installato pre e post-generazione eventi nella costruzione del mio applicazione Web.

Pre evento di compilazione:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /ul Uninstall.Gac.txt

Inserisci evento di build:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /f /il Install.Gac.txt
%windir%\system32\inetsrv\appcmd.exe recycle apppool -apppool.name:"Sharepoint IIS WebApps"

Come potete vedere sto anche riciclare il mio pool di applicazioni web per le nuove assemblee per iniziare a lavorare.

Il problema che sto avendo è che questo è un processo molto inaffidabile. Nel caso in cui la mia applicazione Web non riesce, il mio prossimo costruzione fallirà a causa di disinstallazione non riuscirà (post-generazione non ha eseguito su di build precedente) ... ecc.

Mi piacerebbe fare questo culo processo affidabile possibile. Vorrei condizionale disinstallare e assemblee se sono presenti e con la forza l'installazione, non importa se sono o no ... Ma pre-compilazione evento è ancora importante per la prossima motivo:

Importante

E 'importante che tutti i miei gruppi sono completamente disinstallati prima di accumulo avviene, altrimenti non sono copiati alla mia directory di output (dal compilatore li trova nel GAC) quindi GAC installazione non riesce dal momento che non riesce a trovare le assemblee nell'output \ bin cartella.

Come dovrei fare in modo affidabile GAC disinstallazione e l'installazione sul mio costruire applicazioni web?

È stato utile?

Soluzione

Invece onrelying sullo strumento Gacutil, potrebbe non programmare GAC installazione / disinstallazione? Con il codice, si poteva almeno contare su HRESULT codici di errore e reagire di conseguenza.

Informazioni sulle API GAC può essere trovato qui:

http://blogs.msdn.com/ b / Junfeng / archive / 2004/09/14 / 229649.aspx

Altri suggerimenti

Se la generazione riesce, copiare gli assembly di uscita in un'altra directory e installare in GAC da lì. E in pre-compilazione usate questo elenco per rimuovere queste assemblee dal GAC.

In questo modo non ci dovrebbe mai essere qualsiasi assembly in GAC durante la compilazione. È possibile modificare il post-generazione per copiare i file binari solo se tutti loro sono stati costruiti con successo verificando in file batch, se tutti i file di output esiste.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top