Votre projet ne fait pas référence au framework «.NETFramework, Version = v4.5».

91

J'utilise VS 2015.

Votre projet ne fait pas référence au framework ".NETFramework, Version = 4.5". Ajoutez une référence à «.NETFramework, Version = 4.5» dans la section «frameworks» de votre project.json, puis réexécutez la restauration NuGet.

J'obtiens cette erreur sur mes couches d'accès aux données et de logique métier, peu de temps après l'ajout à ma couche MVC. Les choses allaient bien jusque-là, mais je ne sais pas ce qui a déclenché cette erreur. Voici mon project.json:

{
  "version": "1.0.0-*",
  "description": "foo bar Class Library",
  "authors": [ "foo bar" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "net451": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  }
}

Voici ce que j'ai essayé:

  1. Remplacement de "dotnet5.4" par "net451" (et suppression) comme indiqué dans cette réponse .

Le résultat est la même erreur.

  1. Remplacer "dotnet5.4" par "net45" et laisser le "net451". Cela entraîne une nouvelle erreur:

Votre project.json n'a pas de section runtimes. Vous devez ajouter '"runtimes": {"win": {}}' à votre project.json, puis réexécuter la restauration NuGet.

J'ai essayé de faire comme cette erreur l'a suggéré et d'ajouter

"runtimes": {
    "win":  {}
  },

Cela m'a donné cette erreur, que je n'arrive pas à surmonter:

Votre project.json ne répertorie pas «win» comme runtime ciblé. Vous devez ajouter '"win": {}' dans votre section "runtimes" de votre project.json, puis réexécuter la restauration NuGet.

J'ai déjà ajouté "win", et cela commence à se sentir comme un hareng rouge. Que suis-je en train de modifier directement project.json, NuGet ne gère-t-il pas cela?

S. Loveland ECY
la source
Pour la première partie, accédez aux paramètres de votre projet et définissez Target Framework sur 4,5
Hirbod Behnam
C'est déjà réglé de cette façon.
S. Loveland ECY
1
@ S.LovelandECY Avez-vous résolu ce problème? J'obtiens le même problème que j'utilise 4.5.1, 4.5.2 ou 4.6 - Tous mes projets utilisent définitivement la même version de framework.
Thierry
@ S.LovelandECY, vous voudrez peut-être envisager de changer la réponse acceptée étant donné la disparité entre les votes entre elle et la réponse la plus votée
RJFalconer

Réponses:

10

Je viens de comprendre le problème. J'ai fini par cliquer sur Restore Nuget Packagesau niveau de la solution et j'ai réussi à compiler mon PCLfichier, puis le reste de ma solution.

J'espère que cela t'aides.

Thierry
la source
1
cette réponse est ce qui était pertinent pour moi.
kovac
186

J'ai eu le même problème et j'ai fini par devoir non seulement supprimer le contenu de binet des objdossiers, mais aussi le .vsrépertoire de la solution.

Chris R. Donnelly
la source
1
.vs était à l'origine du problème pour moi
Lukas
7
c'était la solution pour moi!
Riki
9
.vs n'était pas nécessaire pour moi. Merci!
geynske006
2
Je ne sais pas comment vous remercier correctement. Je me gratte la tête depuis presque une heure en essayant de comprendre celui-ci. supprimé tous les 3 et fonctionnant comme un charme. +1
tfrascaroli
2
Je soupçonne que ce problème est causé par le changement de branches GitHub sur ma boîte de développement local. Autrement dit, je travaille dans une branche et la compilation crée de nombreux fichiers qui ne font pas partie du référentiel. Ensuite, je récupère une branche différente, et ces fichiers non référentiels sont toujours en place. D'une manière ou d'une autre, ils sont en conflit avec les fichiers nouvellement extraits.
Phoeniceus Agelaius
127

J'ai eu le même problème - cela se produit toujours en utilisant Visual Studio 2017.3, qui utilise des fichiers .csproj au lieu de project.json. Fait intéressant, le message d'erreur contient toujours le texte "project.json".

Il semble que la cause de ce problème soit un fichier de verrouillage ou un obj\project.assets.jsonfichier (selon votre version de VS) d'une version précédente, qui n'est pas supprimé lors d'un nettoyage, comme décrit ici .

La suppression manuelle du /objrépertoire est une solution rapide.

Si vous avez un "nouveau" projet (par exemple .NET Core ou un projet netstandard créé dans VS 2017) et un "ancien" projet dans le même répertoire (par exemple, un projet .NET 4.6 créé dans VS 2015), il semble qu'ils se battront continuellement car ils utilisent tous les deux le ./objrépertoire de différentes manières. Plus d'infos ici. .

La solution de contournement msbuild consiste à faire en sorte que l'un de vos projets utilise un répertoire différent obj. J'ai ajouté ceci à mon "ancien" csproj:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>
crimbo
la source
4
Cette solution de contournement fonctionne bien avec VS 2017, vous m'avez sauvé à temps.
MechanicalCoder
2
Brillant. Excellente explication aussi.
Mick Byrne
1
Laissez-moi ajouter mes remerciements. La suppression de tous les dossiers "obj" incriminés a également résolu mon problème.
Stuart
2
Dieu te bénisse! Je me demandais où se trouve le sanglant fichier project.json. Suppression / obj l'a fait
Vishnoo Rath
1
Encore un problème même dans VS 2019. Merci pour la solution!
user2363676
27

J'ai trouvé qu'un project.lock.json non autorisé provoquait ce problème pour moi. Une fois que j'ai supprimé le fichier, le problème a disparu.

Voici une documentation sur project.lock.json.

Un autre conseil serait de vous assurer que project.lock.json est ignoré dans votre fichier git ignore et d'essayer un git clean complet. Assurez-vous de bien comprendre les implications d'un nettoyage Git avant de le faire.

Christian Findlay
la source
2

J'ai eu le même problème après la mise à jour vers Visual Studio pour Mac 7.4 (build 1033):

Error: Your project is not referencing the "MonoAndroid,Version=v7.1" framework. Add a reference to "MonoAndroid,Version=v7.1" in the "frameworks" section of your project.json, and then re-run NuGet restore.

Je n'ai pas de fichiers de projet json. Les conseils ici n'ont pas aidé non plus, j'ai donc dû découvrir à la dure que je devais installer le dernier SDK Android (Oreo 8.1) en plus de mon SDK cible (Nougat 7.1).

entrez la description de l'image ici

Waescher
la source
0

J'ai le même problème, mais j'ai résolu en ajoutant la bonne ressource de paquet de nugget à vs2017-->tools-->options-->Nugetpacakge manager--->updatedl'URL de paquet appropriée.

Reportez-vous à l'image ci-dessous

entrez la description de l'image ici

ch sandeep kumar
la source