2009-12-19 23 views
5

Ho un assembly di interoperabilità in GAC; Esplora risorse lo mostra chiaramente nella cartella C:\WINDOWS\assembly. Tuttavia, quando provo ad aggiungere un riferimento ad esso da Visual Studio, non riesco a vederlo da nessuna parte nella finestra di dialogo Aggiungi riferimento.Assembly GAC mancante nella finestra di dialogo Aggiungi riferimento

Se questo è successo anche a te, qual è la ragione di questo? E come posso risolvere questo?

(Il montaggio è realtà trova nella cartella C:\WINDOWS\assembly\GAC_MSIL, se proprio vuoi saperlo.)

risposta

0

"C: \ WINDOWS \ assembly" è una cartella speciale che in Esplora risorse vengono elencati i gruppi (e l'assemblaggio informazioni) all'interno delle varie sottocartelle.

Per il tuo caso, potrebbe essere necessario puntarlo sul percorso fisico che è "C: \ Windows \ assembly \ GAC_MSIL ..... dll" all'interno di VS.NET.

+0

Lo so. Ma come si fa a 'navigare' in quella sottocartella. Windows Explorer non ti lascerà. Stai insinuando che devo tornare alla compilazione della riga di comando? Ci deve essere un modo migliore. –

+0

Francamente, sono molto perplesso. In primo luogo, se appare nella cartella assembly, dovresti essere in grado di visualizzare nella scheda "Sfoglia" della finestra di dialogo "Aggiungi riferimento" Spiacenti, spero che qualcun altro possa aiutarti qui. –

5

Aggiungere una delle seguenti chiavi del Registro di sistema, dove si trova la directory da cercare e MyAssembly è la categoria dei propri assembly. Nota HKCU è per l'utente corrente e HKLM è per tutti sullo stesso computer.

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>" 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>" 
+0

In che cosa differisce da [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \.NETFramework \ AssemblyFolders] (La differenza è \ AssemblyFoldersEx \ MyAssemblies ...)? Leggendo http://support.microsoft.com/kb/306149 Supponiamo che la chiave senza sia quella corretta ... – RonnBlack

+0

Come notato da @Soundararajan altrove in questa pagina, VS troverà e creerà correttamente con gli assembly GAC se li aggiungi manualmente al tuo file '.csproj'. La modifica della chiave di registro come descritto qui è necessaria solo se si desidera essere in grado di utilizzare l'interfaccia GUI di VS 'Aggiungi riferimento'. –

2

Come altri hanno fatto notare, la semplice installazione di un assembly nel GAC non assicura che verrà visualizzato nella finestra di dialogo Aggiungi riferimento. Ho trovato la pagina MSDN this con i dettagli. Vedere la sezione Per visualizzare un assieme nella finestra di dialogo Aggiungi riferimento.

-1

Utilizzare questo comando sotto il prompt dei comandi di Visual Studio

regsvr32/u Shfusion.dll

3

ho creato uno strumento che vi aiuterà a raggiungere il tuo obiettivo. Muse VSReferences consentirà di aggiungere un riferimento Cache assembly globale al progetto dalla voce di menu Aggiungi riferimento GAC.

+0

Purtroppo non supporta Visual Studio 2012. – Thought

+1

@Thought: Ho * non ufficialmente * modificato l'estensione per supportare VS2012 e VS2013. È disponibile per il download [qui] (http://ge.tt/2COX9iS/v/1?c). –

0

È inoltre possibile associare la cartella GAC ​​a un'unità virtuale e quindi aggiungere il riferimento GAC tramite la scheda Sfoglia.

Manual da MZ-Tools

0

In alternativa, ho modificato il file di progetto e ha aggiunto il riferimento manualmente.

  1. Installare il gruppo in GAC. gacutil /i "Foo.dll"
  2. Trova il nome sicuro dell'assembly. gacutil /l ti darà la lista da cui puoi scegliere.
  3. nel file di progetto che consumano aggiungere la seguente riga (dal passo precedente)
  4. <Reference Include="Foo, Version=x.x, Culture=neutral, PublicKeyToken=xxx, processorArchitecture=MSIL" />
  5. e funziona. :)
Problemi correlati