Vous devez append une référence à System.Runtime

Je prépare une toute nouvelle solution ASP.NET MVC 5.1. J’ajoute un paquet de paquets NuGet et je le mets en place avec Zurb Foundation, etc.

Dans le cadre de cela, j’ai ajouté une référence à un package NuGet interne qui est une bibliothèque de classes portable et je pense que cela cause un problème sur le serveur de génération.

TeamCity échoue à la construction avec:

Le type ‘System.Object’ est défini dans un assembly non référencé. Vous devez append une référence à l’assembly ‘System.Runtime, Version = 4.0.0.0

J’ai initialement ajouté le correctif pour la même erreur ou une erreur similaire lors de la compilation des pages Web de Razor, cette correction se trouvant dans le web.config

      

Cependant, le problème n’est pas résolu.

Pour implémenter le correctif, développez d’abord la section de compilation web.config existante qui ressemble à ceci par défaut:

  

Une fois élargi, j’ai ensuite ajouté la nouvelle configuration XML suivante selon les instructions:

     

Les balises web.config finales doivent ressembler à ceci:

      

L’ajout d’une référence à cet assembly System.Runtime.dll a résolu le problème:

 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll 

Bien que ce fichier dans ce chemin explicite n’existe pas sur le serveur de génération.

Je posterai plus d’informations une fois que j’ai trouvé de la documentation sur PCL et ces façades.

Mettre à jour

Oui, à peu près rien sur les assemblages de façade sur Internet.

Google:

 (Facades OR Facade) Portable Library site:microsoft.com 

Le commentaire de @ PeterMajeed dans la réponse acceptée m’a aidé à résoudre un problème connexe. Je n’utilise pas la bibliothèque portable, mais j’ai la même erreur de génération sur une nouvelle installation de Windows Server 2012, où j’exécute TeamCity. Installation de Microsoft .NET Framework 4.5.1 Developer Pack s’est occupé du problème (après avoir installé séparément les outils de création MS ).

J’ai eu ce problème dans certaines solutions sur VS 2015 (pas MVC cependant), et même dans la même solution sur un poste de travail mais pas sur un autre. Les erreurs démarrées sont apparues après la modification de la version .NET en 4.6 et le référencement de PCL.

La solution est simple: fermez la solution et supprimez le dossier .vs masqué dans le même dossier que la solution.

L’ajout des références manquantes comme suggéré dans d’autres réponses résout également le problème, mais l’erreur rest résolue même après avoir supprimé les références à nouveau.

En ce qui concerne TeamCity, je ne peux pas dire car ma configuration n’a jamais rencontré de problème. Mais assurez-vous de réinitialiser le catalogue de travail dans le cadre de votre effort de débogage.

Installez le .NET Runtime ainsi que le pack de ciblage pour la version .NET ciblée.

Le pack de développeurs n’est que ces deux éléments regroupés mais, à ce jour, il ne semble pas y avoir de version 4.6, vous devrez donc installer les deux éléments séparément.

Les téléchargements peuvent être trouvés ici: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#

Je devais télécharger et installer le SDK Windows 8.0 (et non 8.1) pour que l’erreur disparaisse sur mon serveur TeamCity.

https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk

La seule façon qui a fonctionné pour moi. Ajoutez l’assembly à web.config

      

J’ai eu ce problème dans une solution avec un projet d’API Web et plusieurs projets de bibliothèque. L’un des projets de la bibliothèque consistait à créer des erreurs, avec des erreurs indiquant que les atsortingbuts Unity n’étaient pas des atsortingbuts “valides”, et qu’une erreur indiquait que je devais référencer System.Runtime.

Après beaucoup de recherches, la réinstallation du Developer Pack 4.5.2 et rien ne fonctionnait, je me suis dit que c’était peut-être juste une incompatibilité de version. J’ai donc examiné les propriétés de chaque projet et l’une des bibliothèques de base visait 4,5 alors que toutes les autres ciblaient 4.5.2. Je l’ai changé pour cibler également la version 4.5.2 et les erreurs ont disparu.

Sur notre serveur de compilation Tfs 2013, j’ai eu la même erreur dans un projet de test. avec le projet web principal exécuté sur .Net 4.5.1.

J’ai installé un package nuGet de System Runtime et ajouté la référence à partir de packages \ System.Runtime.4.3.0 \ ref \ net462 \ System.Runtime.dll

Cela l’a résolu pour moi.

La suppression de la référence sur le gestionnaire de packages Nuget et sa réinsertion ont résolu le problème pour moi.