Ihr Projekt verweist nicht auf das Framework ".NETFramework, Version = v4.6.2". Fügen Sie in "TargetFrameworks" einen Verweis auf ".NETFramework, Version = v4.6.2" hinzu.

103

Ich kann meine Unit-Tests nicht ausführen.

Ich habe den nächsten Fehler:

Ihr Projekt verweist nicht auf das Framework ".NETFramework, Version = v4.6.2". Fügen Sie in der Eigenschaft "TargetFrameworks" Ihrer Projektdatei einen Verweis auf ".NETFramework, Version = v4.6.2" hinzu und führen Sie die NuGet-Wiederherstellung erneut aus.

In app.config:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

Unter Projekt> Eigenschaften> Anwendung> TargetFramework (.NET Framework 4.6.2)

Wie kann ich es reparieren?

Василь Ткачук
quelle

Antworten:

249

Bitte machen Sie die nächsten Schritte

  1. Saubere Lösung
  2. Ordner "Pakete" bereinigen
  3. Ordner "bin" löschen
  4. Ordner "obj" löschen
Larissa Savchekoo
quelle
24
# 3 und # 4 haben das Problem gelöst. Ich hatte einen Zweig, der eine Upgrade-Aufgabe auf 4.7.2 war, musste jedoch zu einem anderen Zweig wechseln, der auf 4.7.1 abzielte. Führen Sie diese Schritte aus, um dieses Problem zu beheben.
jjhayter
4
Musste noch einen Schritt aus dem Lösungsverzeichnis machen: del / S project.assets.json
Jannes
Nach dieser Bereinigung stellte ich fest, dass ich einen weiteren Fehler im Projekt hatte, bei dem der .NET Framework-Fehler angezeigt wurde. Das Problem wurde behoben, indem das Problem behoben wurde.
MeJustAndrew
2
stackoverflow.com/a/755433/769137 verfügt über Batch-Skripte zum Löschen dieser.
Vedran
1
Ich habe ein Upgrade von 4.7.2 auf 4.8 durchgeführt, und es war ausreichend, die obj/Ordner zu löschen .
14.
29

Ich habe ein ähnliches Problem erlebt, aber mit v4.7.2. Ich habe nämlich immer wieder eine Build-Log-Nachricht erhalten:

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

Trotz der Tatsache, dass es ähnlich aussah, funktionierte keiner der oben vorgeschlagenen Schritte für mich. Ich habe diese Nachricht nach jedem Build immer wieder gesehen. Nichts schien helfen zu können.

Tatsächlich hing das Problem damit zusammen, dass ich aufgrund der Migration zwei Projekte in einem Codeordner ablegen musste. Eine davon war auf .Net Core ausgerichtet , eine andere auf .Net Framework , beide verwiesen auf dieselben .Net Standard-Bibliotheken. Anscheinend teilen sie sich denselben objOrdner, in dem Core-Projekte project.assets.jsonDateien ablegen. Genau diese Datei stört das Framework-Projekt und verhindert dessen normale Erstellung. Scheint auch dann, wenn Sie die Migration von packages.config zu PackageReference durchgeführt haben ... was als eine der möglichen Lösungen empfohlen wurde.

Sie können versuchen, das Problem zu beheben, indem Sie das folgende Snippet in Ihre Framework-Projektdatei einfügen:

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

Es hat sofort bei mir funktioniert, erst später habe ich aufmerksam gelesen, warum wir es brauchen und warum es funktioniert. Ich fand es unerwartet in Teil 2 von Migrieren einer Beispiel-WPF-App zu .NET Core 3 unter Sicherstellen, dass das .NET Framework-Projekt noch erstellt wird. BaseOutputPathund BaseIntermediateOutputPathmsbuild-Variablen sind dort zu finden, nicht sicher, ob sie irgendwo gut dokumentiert sind.

Moudrick
quelle
Dies löste mein Problem. Ich würde es sonst nie finden, danke.
Erdogan Kurtur
1
In VS2019 habe ich festgestellt, dass die von Ihnen erwähnten Eigenschaften vor dem OutputPath liegen müssen. Ich habe sie zunächst nur erfolglos am unteren Rand des Csproj abgelegt. Dieser Beitrag enthält einige zusätzliche Details und impliziert, dass dies möglicherweise irgendwann behoben wird: github.com/dotnet/msbuild/issues/2070
John Dyer
17

Das ist mir beim Öffnen eines VS2015-Projekts in VS2017 passiert. Das Löschen des project.assets.jsonaus dem objOrdner hat den Trick getan.

Wie auch immer, das Framework in der Nachricht fehlte in der Datei. Ich habe es dort jedoch nicht hinzugefügt und es gelöscht.

Tanuk
quelle
2
Einfachste Lösung von allen. Suchen Sie einfach nach der Datei in Lösung und löschen Sie sie sofort :)
Imad
5

Ich habe Larissa hochgestimmt, aber ich dachte, es könnte hilfreich sein zu wissen, wie ich dazu gekommen bin. Ich habe meinem Build eine .net-Standardprojektdatei hinzugefügt (wir zielen auf viele Plattformen ab), die die im Ordner obj gefundenen Trümmer erzeugt. Als der Android Sanity Build auftauchte, warf er sich in den Ordner obj. Meine Lösung bestand darin, diesen Ordner als vorgefertigten Schritt zu bereinigen. Dies ist ein schwieriges Problem, da es jahrelang einwandfrei funktioniert hat ... Nadel trifft Heuhaufen.

Helle Brause
quelle
2

In meinem Fall löschen Sie den .pkgrefgen/Ordner unter dem Projektordner funktioniert. Er enthält eine Datei project.assets.json , die auf das alte .net-Framework verweist

Yitong Feng
quelle
2
Meins war eine Datei project.assets.json im Ordner obj. Die Ordner bin und obj wurden gelöscht und das Problem wurde behoben.
Ceres
1

Ich bin mit .net 4.71 auf dasselbe gestoßen. In meinem Fall habe ich einfach von packages.config zu "Paketreferenzen" per migriert

Migrieren Sie von packages.config zu PackageReference

... und es hat mein Problem behoben. Für mich würde ich das sowieso tun. Wenn Sie also schon diesen Weg gehen, würde ich einfach das Obige überspringen und zu Paketreferenzen migrieren.

ebol2000
quelle
0

Ich verwende ein sehr altes .NET-Projekt und es funktionierte einwandfrei, bis es plötzlich aufhörte. Das Upgrade von Visual Studio wurde für mich behoben.

Edgar Salazar
quelle