2012-03-27 7 views
9

Così, su un Win 2008 R2 x64 Std, ho 6 (sei) gacutil.exe tutte diverse (senza contare quelli in cartelle VS), in:Che cosa gacutil.exe dovrei usare?

  1. c: \ Programmi \ Microsoft SDK \ Windows \ v6.0A \ Bin
  2. c: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Bin \ x64
  3. c: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7 .0A \ Bin
  4. c: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ x64
  5. c: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ netfx 4.0 Strumenti
  6. c: \ Program Files (x86) \ Microsoft SDK \ Windows \ v7.0A \ Bin \ netfx 4.0 Tools \ x64

domande sono:

  1. Does x64 versioni hanno alcuna differenza di comportamento?
  2. dovrei preferire v7.0A versioni altri v6.0A?
  3. Dovrei usare NETFX 4.0 Tools versioni per .NET 4.0 assiemi e la versione "standard" per il resto?

Oppure, se c'è qualche articolo di carattere generale sull'argomento, te ne sarò grato.

Update 1. Per quanto riguardaHans Passant's answer:

  1. gacutil.exeè un .NET Framework strumento parte di un "costruire, di distribuzione, e Strumenti di configurazione (.NET Framework)" come ormai obsoleta (!) shfusion.dll was;
  2. Infatti v6.0A provengono VS2008 installare, e può essere ignorato (1, 2);
  3. Anche la teoria della spiegazione a 64 bit sembra ragionevole. Ho anche supporre che ci sia probabilmente una IA64 version of gacutil.exe, quindi è come una "copia strumento per ogni piattaforma", è solo gionro in modo che la versione x86 funziona bene ovunque a causa della WoW64. Minus 2 versione gacutil dalla lista (4, 6);
  4. La parte su quale versione utilizzare, sembra essere sbagliata. V4.0 gacutil.exe rileva e posiziona l'assembly in base al suo CLR di destinazione e funziona perfettamente sia per .NET 4.0 sia per gli assembly di versione precedenti. Quindi la domanda è: perché lasciare V2.0 gacutil.exe? La mia ipotesi sarebbe ai fini della distribuzione su ambienti che .NET 4.0 non è disponibile.
  5. usare o non usare GAC, non era nella domanda. Quindi lascio l'ultimo paragrafo senza commenti.

Aggiornamento 2.

Quindi, a me sembra che si può usare in modo sicuro sia il numero 3 (quindi .NET4.0 non è disponibile) o il numero 5 altrimenti per tutte le operazioni GAC per Windows x86 e x64 .E le risposte alle domande sono:

  1. No.
  2. non importa, ma utilizzando le versioni più recenti sembra più logico.
  3. No, è sempre possibile utilizzare la versione NETFX 4.0 Tools (se .NET4.0 è disponibile) per tutte le operazioni GAC.
+2

Davvero voglio rispondere ... "Nessuno di loro ... nuget o bin distribuisce FTW" !! –

+0

@DanielElliott bravo ;-) Ma ancora, questa volta voglio davvero chiarire questa domanda. –

+0

Interessato a una risposta anch'io ... buona fortuna! –

risposta

3

Versione breve: se si dispone di .NET 4.0, utilizzare la versione NETFX 4.0 Tools. Altrimenti non importa.

Le risposte alle domande:

  1. No.
  2. non ha molta importanza a meno che non v'è alcuna NET 4.0 installato, nel qual caso si dovrebbe usare NETFX 4.0 Tools versione. Non sono sicuro se sia possibile avere un SDK v7.0 e non avere installato .NET 4.0.
  3. No, è sempre possibile (e necessario) utilizzare la versione NETFX 4.0 Tools per tutte le operazioni GAC.
3

Gacutil.exe è uno strumento di Windows SDK, non uno strumento di .NET Framework. Hai due versioni dell'SDK sulla tua macchina. Hai ottenuto 6.0A dall'installazione VS2008, 7.0A dall'installazione di VS2010. Hai anche un sistema operativo a 64 bit così hai anche gli strumenti a 64 bit. Che non è importante per gacutil.exe, non sono sicuro del motivo per cui lo includono separatamente. Probabilmente per mantenere attivo il prompt dei comandi di Visual Studio, si noti che sono disponibili versioni separate a 32 e 64 bit. Ciò conta molto per i progetti C++. VS2010 consente di indirizzare sia CLR versione 4 che CLR versione 2, quindi sono 6 versioni totali.

Ciò che importa molto è che sul computer sono presenti due GAC. Il GAC per .NET 4 assembly è archiviato in c: \ windows \ microsoft.net \ assembly. Per le versioni precedenti è memorizzato in c: \ windows \ assembly. È necessario utilizzare la versione corretta di gacutil.exe per ottenere un assembly nel GAC corretto. Per un assembly destinato a .NET 4, è necessario che utilizzi per utilizzare uno in Strumenti Bin \ NETFX 4.0. E per quelli precedenti, è necessario utilizzare quello in Bin.

L'utilizzo non del tutto ottimale, gli assembly devono avere la proprietà Copia locale impostata su una macchina di sviluppo. Il GAC è un dettaglio di distribuzione, ti troverai nei guai quando il tuo GAC ha un assembly che il GAC dell'utente non ha.

+0

Inoltre, gli utenti senza diritti amministrativi non saranno in grado di installare un'applicazione che richiede assembly nel GAC (come Oracle ODP.NET). Nel caso di ODP.NET, la copia locale non funziona. –

0

Questa non è la risposta migliore, ma sto notando un'osservazione. Utilizzare la cartella della versione più recente, in base a ciò che si sta utilizzando per la propria applicazione sviluppata per l'installazione associata di Visual Studio.

C:\Program Files (x86)\Microsoft SDKs\Windows\{SDK version}\bin\NETFX 4.5.1 Tools\gacutil.exe 

Se si confronta il Pannello di controllo> Programmi e funzionalità> "installato sul" data per il mio Visual Studio installa, sto vedendo molte cartelle diverse sotto qui. Immagino che più cartelle siano state aggiornate durante queste due installazioni.

cartelle in cui "Gacutil.exe" risiede e data di modifica:

C:\Program Files (x86)\Microsoft SDKs\Windows\ 
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ - 3/20/2014 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ - 5/15/2015 
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\ - 5/15/2015 

di Windows Installazioni Visual Studio con "installato sul" Data:

Visual Studio 2012 - 3/20/2014 
Visual Studio 2013 - 5/15/2015 

Per ottenere un confronto di ciò che è nella GAC, ho eseguito questo comando e diffetto i file da confrontare.

cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ 
gacutil /l > c:\v8.1A.gac.txt 

Quindi ho modificato la cartella in modo appropriato per ogni versione.