Projeniz “.NETFramework, Version = v4.5” çerçevesine başvurmuyor.


91

VS 2015 kullanıyorum.

Projeniz ".NETFramework, Version = 4.5" çerçevesine başvurmuyor. Project.json dosyanızın "çerçeveler" bölümünde ".NETFramework, Version = 4.5" için bir başvuru ekleyin ve ardından NuGet geri yüklemesini yeniden çalıştırın.

Bu hatayı, MVC Katmanıma ekledikten kısa bir süre sonra Veri Erişimi ve İş Mantığı katmanlarımda alıyorum. O zamana kadar işler yolunda gidiyordu, ancak bu hatayı neyin tetiklediğini bilmiyorum. İşte projem.json:

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

İşte denediğim şey:

  1. Bu yanıtta olduğu gibi "dotnet5.4" 'ü "net451" ile değiştirmek (ve silmek) .

Sonuç aynı hatadır.

  1. "Dotnet5.4" "net45" ile değiştiriliyor ve "net451" bırakılıyor. Bu, yeni bir hatayla sonuçlanır:

Project.json dosyanızın çalışma zamanları bölümü yok. Project.json dosyanıza '"çalışma zamanları": {"win": {}}' eklemeli ve ardından NuGet geri yüklemesini yeniden çalıştırmalısınız.

Bu hatanın önerdiği gibi yapmayı ve eklemeyi denedim

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

Bu bana, geçemediğim bu hatayı aldı:

Project.json, hedeflenen çalışma zamanı olarak 'win'i listelemiyor. Project.json dosyanızdaki "çalışma zamanları" bölümünüzün içine "kazan": {} 'eklemeli ve ardından NuGet geri yüklemesini yeniden çalıştırmalısınız.

Zaten "kazan" ı ekledim ve bu kırmızı ringa balığı gibi hissetmeye başlıyor. Doğrudan project.json dosyasını değiştirerek ne yapıyorum, NuGet bunu işlemiyor mu?


İlk bölüm için proje ayarlarınıza gidin ve Hedef Çerçeveyi 4,5 olarak ayarlayın
Hirbod Behnam

Zaten bu şekilde ayarlandı.
S. Loveland ECY

1
@ S.LovelandECY Bu sorunu çözdünüz mü? 4.5.1, 4.5.2 veya 4.6 kullansam da aynı sorunu yaşıyorum - Tüm projelerim kesinlikle aynı çerçeve sürümünü kullanıyor.
Thierry

@ S.LovelandECY ile en yüksek oyu alan cevap arasındaki oylar arasındaki farklılık göz önüne alındığında, kabul edilen yanıtı değiştirmeyi düşünebilirsiniz
RJFalconer

Yanıtlar:


10

Aslında sorunu yeni çözdüm. Restore Nuget PackagesÇözüm düzeyinde tıklamaya son verdim ve dosyamı PCLve ardından çözümümün geri kalanını derlemeyi başardım .

Bu yardımcı olur umarım.


1
bu cevap benim için önemli olan şeydi.
kovac

189

Aynı sorunu yaşadım ve sadece binve objklasörlerin içeriğini değil , aynı zamanda .vsçözüm için dizini de silmek zorunda kaldım .


1
.vs benim için soruna neden oluyordu
Lukas,

7
bu benim için çözümdü!
Riki

9
.vs benim için gerekli değildi. Teşekkürler!
geynske006

2
Sana nasıl doğru düzgün teşekkür edeceğimi bilmiyorum. Bunu anlamaya çalışırken bir saatin çoğunu kafamı kaşıyordum. 3'ünü de sildi ve bir cazibe gibi çalışıyor. +1
tfrascaroli

2
Bu soruna yerel geliştirme kutumdaki GitHub şubelerinin değiştirilmesinin neden olduğuna dair bir şüphem var. Yani tek bir dalda çalışıyorum ve derleme deponun parçası olmayan çok sayıda dosya yaratıyor. Sonra farklı bir şubeyi kontrol ediyorum ve bu depo dışı dosyalar hala yerinde. Bir şekilde yeni teslim alınan dosyalarla çelişiyorlar.
Phoeniceus Agelaius

128

Ben de aynı sorunu yaşadım - bu hala project.json yerine .csproj dosyalarını kullanan Visual Studio 2017.3 kullanarak gerçekleşiyor. İlginç bir şekilde, hata mesajı hala "project.json" metnini içeriyor.

Görünüşe göre bu sorunun nedeni, burada açıklandığı gibiobj\project.assets.json bir temizleme sırasında kaldırılmayan önceki bir derlemeden bir kilit dosyası veya dosyası (VS sürümünüze bağlı olarak) .

/objDizini manuel olarak silmek hızlı bir çözümdür.

"Yeni" bir projeniz (örn. VS 2017'de oluşturulmuş .NET Core veya netstandard projesi) ve aynı dizinde "eski" bir projeniz varsa (örn. VS 2015'te oluşturulan .NET 4.6 projesi), sürekli olarak savaşacaklar çünkü ikisi de ./objdir'i farklı şekillerde kullanır. Daha fazla bilgi burada. .

Msbuild geçici çözümü, projelerinizden birinin farklı bir objdizin kullanmasını sağlamaktır . Bunu "eski" csproj'uma ekledim:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>

4
Bu geçici çözüm VS 2017 ile iyi çalışıyor, beni zamandan kurtardınız.
MechanicalCoder

2
Parlak. Aynı zamanda harika bir açıklama.
Mick Byrne

1
Teşekkürlerimi ekleyeyim. Tüm rahatsız edici "obj" klasörlerini silmek de sorunumu çözdü.
Stuart

2
Çok yaşa! Kanlı project.json dosyasının nerede olduğunu merak ediyordum. Siliniyor / obj yaptı
Vishnoo Rath

1
VS 2019'da bile hala bir sorun. Çözüm için teşekkürler!
user2363676

27

Sahte bir project.lock.json dosyasının benim için bu soruna neden olduğunu buldum. Dosyayı sildikten sonra sorun ortadan kalktı.

İşte project.lock.json ile ilgili bazı belgeler.

Başka bir tavsiye, project.lock.json'un git ignore dosyanızda yok sayıldığından emin olmak ve tam bir git clean'i denemek olabilir. Bunu yapmadan önce Git temizliğinin sonuçlarını anladığınızdan emin olun.


2

Mac için Visual Studio 7.4'e (derleme 1033) güncelledikten sonra aynı sorunu yaşadım:

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.

Hiç json proje dosyam yok. Buradaki ipuçları da yardımcı olmadı, bu yüzden hedef SDK'ma (Nougat 7.1) ek olarak en son Android SDK'yı (Oreo 8.1) yüklemenin zor yolunu bulmam gerekti.

görüntü açıklamasını buraya girin


0

Aynı sorunu yaşıyorum, ancak uygun paket url'sine uygun külçe paketi kaynağı ekleyerek çözdüm vs2017-->tools-->options-->Nugetpacakge manager--->updated.

Aşağıdaki resme bakın

görüntü açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.