Twój projekt nie odwołuje się do frameworka „.NETFramework, Version = v4.6.2”. Dodaj odniesienie do „.NETFramework, Version = v4.6.2” w „TargetFrameworks”

112

Nie mogę uruchomić moich testów jednostkowych.

Mam następny błąd:

Twój projekt nie odwołuje się do struktury „.NETFramework, Version = v4.6.2”. Dodaj odwołanie do „.NETFramework, Version = v4.6.2” we właściwości „TargetFrameworks” pliku projektu, a następnie ponownie uruchom przywracanie NuGet.

W app.config:

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

W projekcie> Właściwości> aplikacji> TargetFramework (.NET Framework 4.6.2)

Jak mogę to naprawić?

Василь Ткачук
źródło

Odpowiedzi:

272

Proszę wykonać następne kroki

  1. Czyste rozwiązanie
  2. Wyczyść „pakiety” folderu
  3. Usuń folder „bin”
  4. Usuń folder „obj”
Larissa Savchekoo
źródło
27
# 3 i # 4 rozwiązały problem. Miałem gałąź, która była zadaniem aktualizacji do 4.7.2, jednak musiałem przejść na inną gałąź, która była ukierunkowana na 4.7.1. Wykonaj poniższe czynności, aby rozwiązać ten problem.
jjhayter
4
Musiałem zrobić jeszcze jeden krok, z katalogu rozwiązań: del / S project.assets.json
Jannes
Po wyczyszczeniu tego dowiedziałem się, że wystąpił inny błąd w projekcie, który był wyświetlany jako błąd .Net Framework. Naprawienie tego rozwiązało problem.
meJustAndrew
2
stackoverflow.com/a/755433/769137 zawiera skrypty wsadowe do ich usuwania.
Vedran
1
Zaktualizowałem z 4.7.2 do 4.8 i wystarczyło mi usunąć obj/foldery.
skst
30

Miałem podobny problem, ale z v4.7.2. Mianowicie, ciągle otrzymywałem następujący komunikat dziennika kompilacji:

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.

Pomimo tego, że wyglądało podobnie, żaden z proponowanych powyżej kroków nie zadziałał. Widziałem ten komunikat po każdej kompilacji. Wydawało się, że nic nie jest w stanie pomóc.

W rzeczywistości problem był związany z tym, że z powodu migracji musiałem umieścić dwa projekty w jednym folderze kodu. Jeden z nich był skierowany do .Net Core , drugi do .Net Framework , oba odwoływały się do tych samych bibliotek .Net Standard. Najwyraźniej dzielą ten sam objfolder, w którym umieszczają project.assets.jsonplik projektów Core . Właściwie to dokładnie ten plik koliduje z projektem Framework, uniemożliwiając jego normalną kompilację. Wydaje się, że nawet jeśli wykonałeś migrację z packages.config do PackageReference ... co było zalecane jako jedno z możliwych rozwiązań.

Możesz spróbować rozwiązać problem, umieszczając następujący fragment kodu w pliku projektu Framework:

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

U mnie od razu zadziałało, dopiero później uważnie przeczytałem, dlaczego tego potrzebujemy i dlaczego działa. I nagle okazało się, że w części 2 o migracji aplikacji WPF próbki do .NET Core 3 pod Upewniwszy projekt Framework nadal buduje odcinek. BaseOutputPathi BaseIntermediateOutputPathzmienne msbuild można tam znaleźć, nie jestem pewien, czy są one dobrze udokumentowane w dowolnym miejscu.

moudrick
źródło
To rozwiązało mój problem. Inaczej nigdy bym tego nie znalazł, dzięki.
Erdogan Kurtur
1
W VS2019 stwierdziłem, że wymienione właściwości muszą znajdować się przed OutputPath. Początkowo po prostu upuściłem je na dole csproj bez powodzenia. Ten post zawiera dodatkowe szczegóły i sugeruje, że w pewnym momencie może to zostać naprawione: github.com/dotnet/msbuild/issues/2070
John Dyer
20

Zdarzyło mi się to podczas otwierania projektu VS2015 w VS2017. Usunięcie pliku project.assets.jsonz objfolderu załatwiło sprawę.

Zresztą w pliku brakowało Framework z wiadomości, jednak nie dodałem go tam, poszedłem z jego usunięciem.

tanuk
źródło
2
Najprostsze rozwiązanie ze wszystkich. Po prostu wyszukaj plik w rozwiązaniu i usuń je od razu :)
Imad
5

Głosowałem za Larissą, ale pomyślałem, że warto wiedzieć, jak się w to wpakowałem. Dodałem standardowy plik projektu .net do mojej kompilacji (celujemy w wiele platform) i utworzyłem śmieci znalezione w folderze obj. Kiedy pojawiła się kompilacja dla Androida, zwróciła się do folderu obj. Moim rozwiązaniem było wyczyszczenie tego folderu jako krok przed kompilacją. To trudny problem, ponieważ przez lata działał dobrze ... igła na stogu siana.

Pale Ale
źródło
2

W moim przypadku usuń .pkgrefgen/folder w folderze projektu działa, zawiera plik project.assets.json, który odwołuje się do starej platformy .net

Yitong Feng
źródło
2
Mój był plikiem project.assets.json w folderze obj. Usunięto foldery bin i obj, a problem zniknął.
Ceres,
1

Wpadłem na to samo z .net 4.71. W moim przypadku po prostu przeprowadziłem migrację z packages.config do "odniesień do pakietów" na

Przeprowadź migrację z packages.config do PackageReference

... i to rozwiązało mój problem. Dla mnie i tak zamierzałem to zrobić, więc jeśli już to robisz, po prostu pominę powyższe i dokonam migracji do odniesień do pakietów.

ebol2000
źródło
0

Używam bardzo starego projektu .NET i działał dobrze, dopóki nagle się nie zatrzymał. Uaktualnienie Visual Studio naprawione dla mnie ty.

Edgar Froes
źródło