Projeniz ".NETFramework, Version = v4.6.2" çerçevesine başvurmuyor. "TargetFrameworks" içinde ".NETFramework, Version = v4.6.2" için bir referans ekleyin


103

Birim testlerimi çalıştıramıyorum.

Bir sonraki hatam var:

Projeniz ".NETFramework, Version = v4.6.2" çerçevesine başvurmuyor. Proje dosyanızın "TargetFrameworks" özelliğinde ".NETFramework, Version = v4.6.2" öğesine bir başvuru ekleyin ve ardından NuGet geri yüklemesini yeniden çalıştırın.

İçinde app.config:

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

Proje> Özellikler> Uygulama> TargetFramework (.NET Framework 4.6.2) içinde

Nasıl düzeltebilirim?


Yanıtlar:


249

Lütfen sonraki adımları yapın

  1. Temiz çözüm
  2. Klasör "paketlerini" temizleyin
  3. "Bin" klasörünü silin
  4. "Obj" klasörünü silin

24
# 3 ve # 4 sorunu çözdü. 4.7.2'ye yükseltme görevi olan bir şubem vardı, ancak 4.7.1'i hedefleyen başka bir şubeye geçmek zorunda kaldım. Bu sorunu çözmek için aşağıdaki adımları uygulayın.
jjhayter

4
Çözüm dizininden bir adım daha atmamız gerekiyordu: del / S project.assets.json
Jannes

Bu temizliği yaptıktan sonra, projede .Net Framework hatasını gösteren başka bir hatam olduğunu öğrendim. Düzeltmek sorunu çözdü.
meJustAndrew

2
stackoverflow.com/a/755433/769137 , bunları silmek için toplu komut dosyalarına sahiptir.
Vedran

1
4.7.2'den 4.8'e yükselttim ve obj/klasörleri silmem yeterli oldu .
skst

29

Benzer bir sorunu yaşadım ama ile v4.7.2. Yani, şöyle bir günlük mesajı oluşturmaya devam ettim:

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.

Benzer görünmesine rağmen, yukarıda önerilen adımların hiçbiri benim için işe yaramadı. Her derlemeden sonra bu mesajı görmeye devam ettim. Hiçbir şey yardımcı olamaz gibiydi.

Aslında sorun bununla ilgiliydi, geçiş nedeniyle iki projeyi bir kod klasörüne koymak zorunda kaldım . Bunlardan biri .Net Core'u , diğeri .Net Framework'ü hedef aldı , her ikisi de aynı .Net Standard kitaplıklarına başvurdu. Görünüşe göre objCore projelerinin project.assets.jsondosya koyduğu aynı klasörü paylaşıyorlar . Aslında tam olarak bu dosya Framework projesine müdahale ederek normal yapısını engelliyor. Muhtemel çözümlerden biri olarak önerilen packages.config'den PackageReference ... ' e geçiş yapmış olsanız bile görünüyor .

Aşağıdaki parçacığı Framework proje dosyanıza ekleyerek sorunu çözmeyi deneyebilirsiniz:

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

Benim için hemen işe yaradı, ancak daha sonra neden ihtiyacımız olduğunu ve neden işe yaradığını dikkatlice okuduğumda oldu. Ben beklenmedik buldum kısmının 2 arasında .NET Çekirdek 3 göç bir örnek WPF Uygulama kapsamında .NET Framework proje hala oluşturur emin olma bölüm. BaseOutputPathve BaseIntermediateOutputPathmsbuild değişkenleri orada bulunabilir, herhangi bir yerde iyi belgelenmiş olup olmadıklarından emin değildir.


Bu benim sorunumu çözdü. Asla başka türlü bulamazdım, teşekkürler.
Erdoğan Kurtur

1
VS2019'da bahsettiğiniz özelliklerin OutputPath'den önce olması gerektiğini buldum. Başlangıçta onları csproj'un altına düşürdüm ve başarılı olamadım. Bu gönderi bazı ek ayrıntılar içeriyor ve bunun bir noktada düzeltilebileceğini ima ediyor: github.com/dotnet/msbuild/issues/2070
John Dyer

17

Bu bana VS2017'de bir VS2015 projesi açarken oldu. Silme project.assets.jsongelen objklasörün hile yaptı.

Her neyse, mesajdaki Çerçeve dosyada eksikti, yine de eklemedim, silerek gittim.


2
Hepsinden daha basit çözüm. Dosyayı çözümde arayın ve bir kerede silin :)
Imad

5

Larissa'ya oy verdim ama bu işe nasıl girdiğimi bilmenin faydalı olacağını düşündüm. Yapıma bir .net standart proje dosyası ekledim (birçok platformu hedefliyoruz) ve obj klasöründe bulunan enkazı üretti. Android akıl sağlığı sistemi ortaya çıktığında, obj klasörüne attı. Çözümüm, bu klasörü bir ön oluşturma adımı olarak temizlemek oldu. Bu zor bir problem çünkü yıllarca gayet iyi çalışıyordu ... iğne samanlıkta buluştu.


2

Benim durumum için .pkgrefgen/, proje klasörünün altındaki klasörü sil, eski .net çerçevesine başvuran bir project.assets.json dosyası içeriyor


2
Benimki obj klasöründe bir project.assets.json dosyasıydı. Bin ve obj klasörleri silindi ve sorun ortadan kalktı.
Ceres


0

Çok eski bir .NET projesi kullanıyorum ve aniden durana kadar iyi çalışıyordu. Visual Studio'nun yükseltilmesi benim için düzeltildi.

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.