Ihr Projekt verweist nicht auf das Framework ".NETFramework, Version = v4.5".


91

Ich benutze VS 2015.

Ihr Projekt verweist nicht auf das Framework ".NETFramework, Version = 4.5". Fügen Sie im Abschnitt "Frameworks" Ihrer project.json einen Verweis auf ".NETFramework, Version = 4.5" hinzu und führen Sie die NuGet-Wiederherstellung erneut aus.

Kurz nach dem Hinzufügen zu meiner MVC-Ebene wird dieser Fehler auf meinen Ebenen "Datenzugriff" und "Geschäftslogik" angezeigt. Bis dahin lief alles gut, aber ich weiß nicht, was diesen Fehler ausgelöst hat. Hier ist mein 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"
      }
    }
  }
}

Folgendes habe ich versucht:

  1. Ersetzen Sie "dotnet5.4" durch "net451" (und löschen Sie es), wie in dieser Antwort gefunden .

Ergebnis ist der gleiche Fehler.

  1. Ersetzen Sie "dotnet5.4" durch "net45" und verlassen Sie "net451". Dies führt zu einem neuen Fehler:

Ihre project.json hat keinen Laufzeitbereich. Sie sollten '"runtimes": {"win": {}}' zu Ihrer project.json hinzufügen und dann die NuGet-Wiederherstellung erneut ausführen.

Ich habe versucht, den Fehler zu beheben und hinzuzufügen

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

Dies brachte mir diesen Fehler, an dem ich scheinbar nicht vorbeikomme:

Ihre project.json listet 'win' nicht als gezielte Laufzeit auf. Sie sollten '"win": {}' in Ihrem Abschnitt "runtimes" in Ihrer project.json hinzufügen und dann die NuGet-Wiederherstellung erneut ausführen.

Ich habe bereits "win" hinzugefügt, und dies fühlt sich allmählich wie ein roter Hering an. Was mache ich, um die project.json direkt zu ändern? Behandelt NuGet das nicht?


Für den ersten Teil gehen Sie zu Ihren Projekteinstellungen und setzen Sie Target Framework auf 4.5
Hirbod Behnam

Es ist schon so eingestellt.
S. Loveland ECY

1
@ S.LovelandECY Hast du das gelöst? Ich habe das gleiche Problem, egal ob ich 4.5.1, 4.5.2 oder 4.6 verwende. Alle meine Projekte verwenden definitiv alle dieselbe Framework-Version.
Thierry

@ S.LovelandECY Vielleicht möchten Sie die akzeptierte Antwort ändern, da die Stimmen zwischen der Antwort und der Antwort mit der höchsten Stimme unterschiedlich sind
RJFalconer

Antworten:


10

Ich habe das Problem gerade erst herausgefunden. Am Ende habe ich auf Restore Nuget PackagesLösungsebene geklickt und es geschafft, meine zu kompilierenPCL Datei und dann den Rest meiner Lösung .

Hoffe das hilft.


1
Diese Antwort war für mich relevant.
Kovac

185

Ich hatte das gleiche Problem und musste nicht nur den Inhalt binund die objOrdner löschen , sondern auch das .vsVerzeichnis für die Lösung.


1
.vs verursachte das Problem für mich
Lukas

7
Das war die Lösung für mich!
Riki

9
.vs war für mich nicht notwendig. Vielen Dank!
Geynske006

2
Ich habe keine Ahnung, wie ich mich richtig bei Ihnen bedanken soll. Ich habe mir fast eine Stunde lang am Kopf gekratzt, um das herauszufinden. löschte alle 3 und arbeitete wie ein Zauber. +1
tfrascaroli

2
Ich habe den Verdacht, dass dieses Problem durch das Wechseln der GitHub-Zweige auf meiner lokalen Entwicklungsbox verursacht wird. Das heißt, ich arbeite in einem Zweig und die Kompilierung erstellt zahlreiche Dateien, die nicht Teil des Repositorys sind. Dann checke ich einen anderen Zweig aus und diese Nicht-Repository-Dateien sind noch vorhanden. Irgendwie widersprechen sie den neu ausgecheckten Dateien.
Phoeniceus Agelaius

127

Ich hatte das gleiche Problem - dies tritt immer noch mit Visual Studio 2017.3 auf, das .csproj-Dateien anstelle von project.json verwendet. Interessanterweise enthält die Fehlermeldung immer noch den Text "project.json".

Es scheint, dass die Ursache für dieses Problem eine Sperrdatei oder obj\project.assets.json-datei (abhängig von Ihrer VS-Version) aus einem früheren Build ist, die während einer Bereinigung nicht entfernt wird, wie hier beschrieben .

Das manuelle Löschen des /objVerzeichnisses ist eine schnelle Problemumgehung.

Wenn Sie ein "neues" Projekt (z. B. .NET Core- oder Netstandard-Projekt, das in VS 2017 erstellt wurde) und ein "altes" Projekt im selben Verzeichnis haben (z. B. .NET 4.6-Projekt, das in VS 2015 erstellt wurde), werden sie anscheinend ständig kämpfen, weil Beide verwenden das ./objVerzeichnis auf unterschiedliche Weise. Mehr Infos hier. .

Die Problemumgehung für msbuild besteht darin, dass eines Ihrer Projekte ein anderes objVerzeichnis verwendet. Ich habe dies zu meinem "alten" csproj hinzugefügt:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>

4
Diese Problemumgehung funktioniert gut mit VS 2017, Sie haben mich pünktlich gespart.
MechanicalCoder

2
Brillant. Tolle Erklärung auch.
Mick Byrne

1
Lassen Sie mich meinen Dank hinzufügen. Das Löschen aller fehlerhaften "obj" -Ordner löste auch mein Problem.
Stuart

2
Gott segne dich! Ich habe mich gefragt, wo die blutige Datei project.json ist. Löschen / obj tat es
Vishnoo Rath

1
Auch in VS 2019 noch ein Problem. Danke für die Lösung!
user2363676

27

Ich fand heraus, dass ein Schurken project.lock.json dieses Problem für mich verursachte. Nachdem ich die Datei gelöscht hatte, verschwand das Problem.

Hier finden Sie eine Dokumentation zu project.lock.json.

Einige weitere Ratschläge wären, sicherzustellen, dass project.lock.json in Ihrer git-Ignorierdatei ignoriert wird, und eine vollständige git-Bereinigung zu versuchen. Stellen Sie sicher, dass Sie die Auswirkungen einer Git-Bereinigung verstehen, bevor Sie dies tun.


2

Ich hatte das gleiche Problem nach dem Update auf Visual Studio für 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.

Ich habe keine JSON-Projektdateien. Die Tipps hier haben auch nicht geholfen, daher musste ich herausfinden, wie schwierig es war, das neueste Android SDK (Oreo 8.1) zusätzlich zu meinem Ziel-SDK (Nougat 7.1) zu installieren.

Geben Sie hier die Bildbeschreibung ein


0

Ich habe das gleiche Problem, aber ich habe es gelöst, indem ich die richtige Nugget-Paketressource an vs2017-->tools-->options-->Nugetpacakge manager--->updatedder richtigen Paket-URL hinzugefügt habe .

Siehe Bild unten

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.