Proyek Anda tidak mengacu pada kerangka kerja ".NETFramework, Version = v4.6.2". Tambahkan referensi ke ".NETFramework, Version = v4.6.2" di "TargetFrameworks"

112

Saya tidak dapat menjalankan pengujian unit saya.

Saya mengalami kesalahan berikutnya:

Proyek Anda tidak mengacu pada kerangka kerja ".NETFramework, Version = v4.6.2". Tambahkan referensi ke ".NETFramework, Version = v4.6.2" di properti "TargetFrameworks" dari file proyek Anda dan kemudian jalankan kembali pemulihan NuGet.

Masuk app.config:

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

Di Project> Properties> Application> TargetFramework (.NET Framework 4.6.2)

Bagaimana cara memperbaikinya?

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

Jawaban:

272

Harap lakukan langkah selanjutnya

  1. Solusi bersih
  2. Bersihkan folder "paket"
  3. Hapus folder "bin"
  4. Hapus folder "obj"
Larissa Savchekoo
sumber
27
# 3 dan # 4 menyelesaikan masalah. Saya memiliki cabang yang merupakan tugas peningkatan ke 4.7.2 namun saya harus beralih ke cabang lain yang menargetkan 4.7.1. Lakukan langkah-langkah ini untuk mengatasi masalah itu.
jjhayter
4
Harus melakukan satu langkah lagi, dari direktori solusi: del / S project.assets.json
Jannes
Setelah melakukan pembersihan ini saya menemukan bahwa saya memiliki kesalahan lain dalam proyek yang menampilkan kesalahan .Net Framework. Memperbaiki itu menyelesaikan masalah.
meJustAndrew
2
stackoverflow.com/a/755433/769137 memiliki skrip batch untuk menghapusnya.
Vedran
1
Saya memutakhirkan dari 4.7.2 ke 4.8, dan itu cukup bagi saya untuk menghapus obj/folder.
skst
30

Saya mengalami masalah serupa, tetapi dengan v4.7.2. Yaitu, saya terus mendapatkan pesan log build seperti ini:

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.

Terlepas dari kenyataan bahwa itu tampak serupa, tidak ada langkah yang diusulkan di atas yang berhasil untuk saya. Saya terus melihat pesan ini setelah setiap build. Sepertinya tidak ada yang bisa membantu.

Faktanya, masalahnya terkait dengan itu, karena migrasi, saya harus meletakkan dua proyek dalam satu folder kode. Salah satunya ditargetkan pada .Net Core , yang lain di .Net Framework , keduanya mereferensikan pustaka .Net Standard yang sama. Rupanya, mereka berbagi objfolder yang sama tempat proyek Inti meletakkan project.assets.jsonfile. Sebenarnya, sebenarnya file ini mengganggu proyek Framework yang mencegah pembuatan normalnya. Tampaknya bahkan jika Anda melakukan Migrasi dari packages.config ke PackageReference ... yang direkomendasikan sebagai salah satu solusi yang memungkinkan.

Anda dapat mencoba memperbaiki masalah ini dengan memasukkan cuplikan berikut ke dalam file proyek Framework Anda:

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

Itu langsung bekerja untuk saya, baru kemudian ketika saya dengan penuh perhatian membaca mengapa kita membutuhkannya dan mengapa itu berhasil. Saya tiba-tiba menemukannya di bagian 2 dari Migrasi Contoh Aplikasi WPF ke .NET Core 3 di bawah Memastikan bagian proyek .NET Framework masih membangun . BaseOutputPathdan BaseIntermediateOutputPathvariabel msbuild dapat ditemukan di sana, tidak yakin apakah mereka terdokumentasi dengan baik di mana saja.

moudrick
sumber
Ini memecahkan masalah saya. Saya tidak akan pernah menemukannya, terima kasih.
Erdogan Kurtur
1
Di VS2019 saya menemukan bahwa properti yang Anda sebutkan harus sebelum OutputPath. Saya awalnya hanya menjatuhkannya di bagian bawah csproj tanpa hasil. Posting ini memiliki beberapa detail tambahan dan menyiratkan bahwa ini mungkin diperbaiki di beberapa titik: github.com/dotnet/msbuild/issues/2070
John Dyer
20

Itu terjadi pada saya saat membuka proyek VS2015 di VS2017. Menghapus project.assets.jsondariobj folder melakukan triknya.

Bagaimanapun, Kerangka dari pesan itu hilang dalam file, saya tidak menambahkannya di sana, pergi dengan menghapusnya.

tanuk
sumber
2
Solusi paling sederhana dari semuanya. Cukup cari file dalam larutan dan hapus sekaligus :)
Imad
5

Saya memilih Larissa tetapi saya pikir mungkin berguna untuk mengetahui bagaimana saya terlibat dalam hal ini. Saya menambahkan file proyek standar .net ke build saya (kami menargetkan banyak platform) dan menghasilkan puing-puing yang ditemukan di folder obj. Ketika android sanity build muncul, folder obj tersebut muncul. Solusi saya adalah membersihkan folder itu sebagai langkah pra-bangun. Ini adalah masalah yang sulit karena bekerja dengan baik selama bertahun-tahun ... jarum bertemu tumpukan jerami.

Pale Ale
sumber
2

Untuk kasus saya, hapus .pkgrefgen/folder di bawah folder proyek bekerja, itu berisi file project.assets.json yang merujuk ke kerangka .net lama

Yitong Feng
sumber
2
Milik saya adalah file project.assets.json di folder obj. Menghapus folder bin dan obj dan masalahnya hilang.
Ceres
1

Saya mengalami hal yang sama dengan .net 4.71. Dalam kasus saya, saya hanya bermigrasi dari packages.config ke "referensi paket" per

Bermigrasi dari packages.config ke PackageReference

... dan itu memperbaiki masalah saya. Bagi saya, saya akan tetap melakukan ini, jadi jika Anda sudah melakukannya, saya akan melewati langkah di atas dan bermigrasi ke referensi paket.

ebol2000.dll
sumber
0

Saya menggunakan proyek .NET yang sangat tua, dan bekerja dengan baik sampai berhenti tiba-tiba. Memutakhirkan Visual Studio tetap untukku.

Edgar Froes
sumber