2015-07-20 20 views
13

Sto cercando di installare il pacchetto NuGet Autofac nel mio progetto utilizzando il comandoInstallare-Pacchetto: Impossibile aggiungere il riferimento a 'System.Runtime'

Install-Package -Prerelease Autofac 

ma non riesce con l'errore

Install-Package : Failed to add reference to 'System.Runtime'. Please make sure that it is in the Global Assembly Cache. 

Ho provato a reinstallare .NET Framework 4.5.2 (che è la versione i miei obiettivi di progetto) ma ho ricevuto il messaggio ".NET Framework 4.5.2 è già installato". Tuttavia, la ricerca C:\Windows\assembly\ per System.Runtime.dll non trova corrispondenze esatte (anche se ci sono alcune istanze di System.Runtime.ni.dll, che (sembra indicare) sono in realtà lo stesso assembly ...).

Cosa posso fare a riguardo?

project config

Aggiornamento: quanto pare ero confuso circa la posizione del GAC. Amy mi ha illuminato e ho cercato in C:\Windows\Microsoft.NET\assembly invece I do trovare System.Runtime.dll. Perché non Visual Studio?

+0

Qual è il tuo progetto di targeting? –

+0

@ DanielA.White: come dice la domanda: .NET Framework 4.5.2. –

+0

hai verificato le proprietà del progetto? fa riferimento a un sottoinsieme del quadro? –

risposta

16

Accertarsi che sia nella cache dell'assembly globale.

Questo è un messaggio di errore inutile eccessivamente. Non solo non descrive il vero problema, ma ti porta anche drasticamente fuori strada per trovare una soluzione alternativa. Un riferimento all'assembly per un assembly .NET Framework deve essere mai proveniente dal GAC. Il tipo di modalità di errore quando lo fa può essere eccessivamente pari a nasty to diagnose. Gli assembly di riferimento devono provenire dalla directory C: \ Program Files (x86) \ Reference Assembly.

Guardando il file .nuspec per il pacchetto nuget di Autofac che si sta tentando di installare, supporta due destinazioni distinte. Uno è per DNXCore versione 4.0.10-beta-22816. Spero che tu non lo stia utilizzando, che il progetto sta cambiando rapidamente.

L'altro è .NET Portable, profilo 259. Che consente al progetto di utilizzare .NET 4.5.x, Store, Phone80 e Phone81. Quello che il messaggio di errore smussato ti dice è che ha problemi a trovare quel profilo. Usa Windows Explorer per avere un look-see, il profilo è memorizzato nella directory C: \ Programmi (x86) \ Reference Assemblies \ Microsoft \ Framework.NETPortable \ v4.5 \ Profile \ Profile259. Ha il necessario System.Runtime.dll assembly di riferimento.

Beh, sicuramente mi scappa, non riesco a indovinare il motivo sottostante.

Hanno fatto piccoli errori nel file .nuspec. Considerare una versione più stabile di Autofac, probabilmente non si vuole essere un beta tester. E non mirare a 4.5.2, non ha senso farlo. Non aggiunge nulla di interessante e costringe il tuo utente ad aggiornare la sua installazione .NET non è molto ragionevole.

+0

Questa è una, per mia comprensione, molto utile writeup - grazie! Tuttavia, ho un 'System.Runtime.dll' nella directory che hai indicato. Potrebbe esserci qualcosa di sbagliato in questo? Come lo so? Sono riuscito a uscire dai miei problemi immediati ricreando i file di progetto da zero e copiando i file di codice da un backup. –

+0

Se nel ricreare il progetto è stato risolto il problema, non si hanno problemi con gli assiemi di riferimento. È molto difficile indovinare cosa potrebbe essere andato storto, vorresti sicuramente eseguire alcuni test di integrità sul tuo disco direi. –

+3

I e un altro utente hanno riscontrato questo problema in modo riproducibile con un pacchetto diverso _SerilogTimings_ - hanno lavorato attorno ad esso aggiungendo manualmente il riferimento, installando il pacchetto, quindi rimuovendolo di nuovo. Sembra un problema con gli strumenti con i pacchetti project.json. –

Problemi correlati