Proyek Anda tidak mereferensikan kerangka kerja ".NETFramework, Version = v4.5".

91

Saya menggunakan VS 2015.

Proyek Anda tidak mereferensikan kerangka kerja ".NETFramework, Version = 4.5". Tambahkan referensi ke ".NETFramework, Version = 4.5" di bagian "frameworks" project.json Anda, lalu jalankan kembali NuGet restore.

Saya mendapatkan kesalahan ini pada lapisan Akses Data dan Logika Bisnis saya, segera setelah menambahkan ke Lapisan MVC saya. Segalanya baik-baik saja sampai saat itu, tetapi saya tidak tahu apa yang memicu kesalahan ini. Ini project.json saya:

{
  "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"
      }
    }
  }
}

Inilah yang saya coba:

  1. Mengganti "dotnet5.4" dengan "net451" (dan menghapusnya) seperti yang ditemukan dalam jawaban ini .

Hasilnya adalah kesalahan yang sama.

  1. Mengganti "dotnet5.4" dengan "net45" dan meninggalkan "net451". Ini menghasilkan kesalahan baru:

Project.json Anda tidak memiliki bagian runtimes. Anda harus menambahkan '"runtimes": {"win": {}}' ke project.json Anda dan kemudian menjalankan kembali NuGet restore.

Saya mencoba melakukan seperti yang disarankan kesalahan ini dan menambahkan

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

Ini memberi saya kesalahan ini, yang sepertinya tidak bisa saya lewati:

Project.json Anda tidak mencantumkan 'menang' sebagai runtime yang ditargetkan. Anda harus menambahkan '"win": {}' di dalam bagian "runtimes" di project.json Anda, dan kemudian jalankan kembali NuGet restore.

Saya sudah menambahkan "menang", dan ini mulai terasa seperti ikan haring merah. Apa yang saya lakukan untuk mengubah project.json secara langsung, bukankah NuGet menangani ini?

S. Loveland ECY
sumber
Untuk bagian pertama, buka pengaturan proyek Anda dan atur Target Framework menjadi 4.5
Hirbod Behnam
Sudah diatur seperti itu.
S. Loveland ECY
1
@ S.LovelandECY Apakah Anda menyelesaikan masalah ini? Saya mendapatkan masalah yang sama apakah saya menggunakan 4.5.1, 4.5.2 atau 4.6 - Semua proyek saya pasti menggunakan versi kerangka kerja yang sama.
Thierry
@ S.LovelandECY Anda mungkin ingin mempertimbangkan untuk mengubah jawaban yang diterima mengingat perbedaan antara suara dan jawaban dengan suara terbanyak
RJFalconer

Jawaban:

10

Saya sebenarnya baru saja menemukan masalahnya. Saya akhirnya mengklik Restore Nuget Packagesdi tingkat solusi dan saya berhasil mengkompilasi PCLfile saya , dan kemudian sisa solusi saya.

Semoga ini membantu.

Thierry
sumber
1
jawaban inilah yang relevan bagi saya.
kovac
188

Saya memiliki masalah yang sama, dan saya akhirnya harus tidak hanya menghapus konten bindan objfolder, tetapi juga .vsdirektori untuk solusinya.

Chris R. Donnelly
sumber
1
.vs menyebabkan masalah bagi saya
Lukas
7
ini adalah solusi untuk saya!
Riki
9
.vs tidak diperlukan bagi saya. Terima kasih!
geynske006
2
Saya tidak tahu bagaimana harus berterima kasih dengan benar. Saya telah menggaruk-garuk kepala selama hampir satu jam mencoba memikirkan yang satu ini. menghapus semua 3 dan bekerja seperti pesona. +1
tfrascaroli
2
Saya curiga bahwa masalah ini disebabkan oleh peralihan cabang GitHub di kotak pengembangan lokal saya. Artinya, saya bekerja di satu cabang dan kompilasi membuat banyak file yang bukan merupakan bagian dari repositori. Kemudian saya melakukan checkout pada cabang yang berbeda, dan file non-repositori ini masih ada. Entah bagaimana mereka bertentangan dengan file yang baru diperiksa.
Phoeniceus Agelaius
128

Saya mengalami masalah yang sama - ini terjadi masih menggunakan Visual Studio 2017.3, yang menggunakan file .csproj, bukan project.json. Menariknya, pesan error tersebut masih mengandung teks "project.json".

Tampaknya penyebab masalah ini adalah file atau file kunci obj\project.assets.json(tergantung pada versi VS Anda) dari build sebelumnya, yang tidak dihapus selama pembersihan, seperti yang dijelaskan di sini .

Menghapus /objdirektori secara manual adalah solusi cepat.

Jika Anda memiliki proyek "baru" (misalnya .NET Core atau proyek netstandard yang dibuat di VS 2017) dan proyek "lama" di direktori yang sama (misalnya, proyek .NET 4.6 dibuat di VS 2015), tampaknya mereka akan terus berjuang karena mereka berdua menggunakan ./objdir dengan cara yang berbeda. Info selengkapnya di sini. .

Solusi msbuild adalah membuat salah satu proyek Anda menggunakan objdirektori yang berbeda . Saya menambahkan ini ke csproj "lama" saya:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>
crimbo
sumber
4
Solusi ini bekerja dengan baik dengan VS 2017, Anda menyelamatkan saya tepat waktu.
MechanicalCoder
2
Cemerlang. Penjelasan yang bagus juga.
Mick Byrne
1
Izinkan saya menambahkan terima kasih. Menghapus semua folder "obj" yang mengganggu juga memecahkan masalah saya.
Stuart
2
Tuhan memberkati Anda! Saya bertanya-tanya di mana file project.json berdarah itu. Menghapus / obj melakukannya
Vishnoo Rath
1
Masih menjadi masalah bahkan di VS 2019. Terima kasih atas solusinya!
pengguna2363676
27

Saya menemukan bahwa project.lock.json nakal menyebabkan masalah ini untuk saya. Setelah saya menghapus file tersebut, masalahnya hilang.

Berikut beberapa dokumentasi di project.lock.json.

Beberapa saran lebih lanjut adalah memastikan bahwa project.lock.json diabaikan di file abaikan git Anda, dan coba git clean. Pastikan Anda memahami implikasi pembersihan Git sebelum Anda melakukannya.

Christian Findlay
sumber
2

Saya mengalami masalah yang sama setelah memperbarui ke Visual Studio untuk 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.

Saya tidak punya file proyek json. Kiat di sini juga tidak membantu, jadi saya harus mencari tahu cara yang sulit bahwa saya harus menginstal Android SDK (Oreo 8.1) terbaru selain SDK target saya (Nougat 7.1).

masukkan deskripsi gambar di sini

Waescher
sumber
0

Saya memiliki masalah yang sama, tetapi saya telah menyelesaikannya dengan menambahkan sumber paket nugget vs2017-->tools-->options-->Nugetpacakge manager--->updatedyang tepat di url paket yang tepat.

Lihat gambar di bawah ini

masukkan deskripsi gambar di sini

ch sandeep kumar
sumber