web-dev-qa-db-fra.com

Install-Package: Échec de l'ajout de la référence à 'System.Runtime'

J'essaie d'installer le package de nuget Autofac dans mon projet à l'aide de la commande

Install-Package -Prerelease Autofac

mais il échoue avec l'erreur

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

J'ai essayé de réinstaller .NET Framework 4.5.2 (qui est la version que mon projet cible) mais j'ai reçu le message ".NET Framework 4.5.2 est déjà installé". Cependant, la recherche C:\Windows\Assembly\ pour System.Runtime.dll ne trouve aucune correspondance exacte (bien qu'il existe quelques instances de System.Runtime.ni.dll, qui (semblent indiquer) qu'il s'agit bien de la même Assemblée ...).

Que puis-je faire à ce sujet?

project config

Mise à jour: apparemment, j'étais confus quant à l'emplacement du GAC. Amy m'a éclairé et a cherché dans C:\Windows\Microsoft.NET\Assembly à la place, je faire trouver System.Runtime.dll. Pourquoi Visual Studio ne fonctionne-t-il pas?

19
Tomas Aschan

J'ai eu le même problème.

Trouvé la solution ici: https://github.com/aspnet/WebHooks/issues/18

Pour y remédier, j'ai ajouté <Reference Include="System.Runtime"/> au .csproj
fichier pour le projet, reconstruit et cela a fonctionné.

26
Roboblob

Veuillez vous assurer qu'il se trouve dans le Global Assembly Cache.

C'est un excessivement message d'erreur inutile. Non seulement il ne décrit pas le vrai problème, mais il vous amène également à vous égarer radicalement pour trouver une solution de contournement. Une référence d'assembly pour un assembly .NET Framework ne doit jamais provenir du GAC. Le type de modes d'échec quand il le fait peut être excessivement méchant à diagnostiquer . Les assemblys de référence doivent provenir du répertoire C:\Program Files (x86)\Reference Assemblies.

En regardant le fichier .nuspec pour le package de nuget Autofac que vous essayez d'installer, il prend en charge deux cibles distinctes. L'un est pour DNXCore version 4.0.10-beta-22816. J'espère que vous ne l'utilisez pas, ce projet évolue rapidement.

L'autre est .NET Portable, profil 259. Ce qui permet à votre projet de cibler .NET 4.5.x, Store, Phone80 et Phone81. Ce que le message d'erreur brutal vous dit, c'est qu'il a du mal à trouver ce profil. Utilisez l'Explorateur Windows pour voir, le profil est stocké dans le répertoire C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.5\Profile\Profile259. Il possède le System.Runtime.dll requis Assembly de référence.

Eh bien, sûrement, ça ne va pas, je ne peux pas deviner la raison sous-jacente.

Ils ont fait de subtiles erreurs dans le fichier .nuspec. Envisagez une version plus stable d'Autofac, vous ne voulez probablement pas être un bêta-testeur. Et ne ciblez pas 4.5.2, cela ne sert à rien. Cela n'ajoute rien d'intéressant et forcer votre utilisateur à mettre à jour son installation .NET n'est pas très raisonnable.

18
Hans Passant