web-dev-qa-db-fra.com

Le type prédéfini 'System.Object' n'est pas défini ou importé .net 4.6

J'utilise MVC 5 et .net 4.6 pour créer une API Web à laquelle mon application mobile peut également se connecter.

Chaque fois que je construis le projet, des centaines d'erreurs me disent que je dois ajouter des références qui sont déjà présentes et que chaque type de mon projet "n'existe pas". Quelques exemples de ces erreurs: (N'incluant pas celle du titre)

ErrorList

Ce que j'ai essayé

  • Ajout d'une référence à System.Runtime via nuGet. (Une recommandation de cette question .)
  • Suppression de aspnetcore50 des frameworks dans le fichier project.json. (Une autre recommandation, cette question .)
  • Redémarrage de VS2015, ma machine.
  • Parcourir le gestionnaire de paquets nuGet et mettre à jour tous les paquets de mon projet au plus tard.
  • En fait, je peux voir les références dans le nœud de références de la solution Explorer.

UPDATE: -Mon fichier project.json ressemble à ceci. (Après modification en fonction de la réponse de Karls. La liste des erreurs est maintenant réduite à dix, mais ce sont toujours les mêmes erreurs qu'auparavant.)

{
  "commands": {
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
  },
  "dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
    "Microsoft.AspNet.Mvc": "6.0.0-beta5",
    "System.Runtime": "4.0.20-beta-23019"
  },
  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],
  "frameworks": {
    "dnx451": {
      "frameworkAssemblies": {
        "System.Data": "4.0.0.0",
        "System.Data.DataSetExtensions": "4.0.0.0",
        "System.Data.Linq": "4.0.0.0"
      }
    }
  },
  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ],
  "version": "1.0.0-*",
  "webroot": "wwwroot"
}
31
KidCode

Je devine un peu ici mais il semble suspect que vous utilisiez le code System.Data.* habituel pour dnx451 mais vous n’avez rien à faire pour le remplacer par dnxcore50. Vous ciblez également l'édition principale ou s'agit-il simplement de restes de la création de projet? Si vous souhaitez cibler l'édition de base tout en utilisant l'ancien System.Data.*, vous devez envelopper tout ce qui est assemblé dans ces assemblys.

#if DNX451
// Do some DNX451 specific stuff here
#endif

Et l'inverse aussi.

#if DNXCORE50
// Do some DNXCORE50 specific stuff here
#endif

Mais si vous ne songez pas encore à le supporter, je supprimerai simplement dnxcore50 de la liste des frameworks et vos erreurs disparaîtront probablement.

2

Supprimer bin et obj et reconstruire.

15
gneric

J'exécute la commande dotnet restore sur la console du gestionnaire de packages et le problème est résolu.

4
Navid_pdp11

Dans mon cas, j'avais un projet qui devait encore être construit sur une version bêta de dnx. Le changer pour construire par rapport à la version que j'utilisais dans les autres projets l'a corrigé.

3
Peter

Pour moi, le problème est survenu lorsque j'ai ajouté un nouveau projet à ma solution. J'ai reconstruit la solution et les erreurs ont disparu. 

0
Sarah Wessel