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?
c#
unit-testing
mstest
csproj
.net-framework-version
Василь Ткачук
quelle
quelle
Antworten:
Bitte machen Sie die nächsten Schritte
quelle
obj/
Ordner zu löschen .Ich habe ein ähnliches Problem erlebt, aber mit
v4.7.2
. Ich habe nämlich immer wieder eine Build-Log-Nachricht erhalten: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
obj
Ordner, in dem Core-Projekteproject.assets.json
Dateien 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.
BaseOutputPath
undBaseIntermediateOutputPath
msbuild-Variablen sind dort zu finden, nicht sicher, ob sie irgendwo gut dokumentiert sind.quelle
Das ist mir beim Öffnen eines VS2015-Projekts in VS2017 passiert. Das Löschen des
project.assets.json
aus demobj
Ordner 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.
quelle
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.
quelle
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 verweistquelle
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.
quelle
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.
quelle