Geçerli .NET SDK, Visual Studio 2017 güncelleştirmesi 15.3'te .NET Standard 2.0 hatasını hedeflemeyi desteklemiyor


119

Target Framework .NET Standard 2.0 ile bir sınıf kitaplığı projesi oluşturmak istiyorum.

Ben benim güncelledik Visual Studio 2017Sürüm 15.3ve ayrıca Visual Studio yükleyici kontrol .NET Framework 4.7 SDKve .NET Framework 4.7 targeting packmanuel ve onları yüklü.

.NET Standard 2.0Proje / Uygulama penceresindeki Hedef Çerçeve açılır kutusunda hala seçenek yoktur . Bu yüzden dosyadaki TargetFramework etiketini .csprojmanuel olarak değiştirdim netstandard2.0, ancak oluşturmaya çalıştıktan sonra şu hatayı alıyorum:

Geçerli .NET SDK, .NET Standard 2.0'ı hedeflemeyi desteklemez. .NET Standard 1.6 veya altını hedefleyin ya da .NET SDK'nın .NET Standard 2.0'ı destekleyen bir sürümünü kullanın.


4
global.json.NET Core SDK'nızı 1.x'e sabitleyen bir dosyanız var mı? .NET Core 2.0 SDK'yı ayrı olarak mı yüklediniz? ( VS'ye dahil edilmesini beklerdim , ancak yine de yüklemek zarar vermez.)
Jon Skeet

1
@JonSkeet, .NET Core 2.0 SDK'yı ayrı ayrı kurdu. Önerinizi cevap olarak buraya eklerseniz iyi olur.
sahar

Yanıtlar:


144

Bu belirli sürüm için VS2017 güncellemesini yüklemek .NET Core 2.0 SDK'yı da yüklememiş gibi görünüyor. Bunu indirebilirsiniz burada .

Halihazırda yüklediğiniz SDK sürümünü kontrol etmek için şunu çalıştırın:

dotnet --info

komut satırından. global.jsonGeçerli çalışma dizininizde veya herhangi bir üst dizinde bir dosya varsa , bunun SDK'nın hangi sürümünün çalıştırılacağını geçersiz kılacağını unutmayın. (Örneğin, bir proje için belirli bir sürümü uygulamak istiyorsanız bu yararlıdır.)

Yorumlarla bakılırsa, VS2017 güncellemeleri bazı sürümleri do .NET Çekirdek SDK'yı yükleyin. Zamanla biraz değişebileceğinden şüpheleniyorum.


1
@Marwie: Netstandard2.0'ı hedeflemek için, yaptığından şüpheleniyorum. 1.0 SDK ile hedeflemeyi denemedim, ancak başarısız olursa şaşırmam. Tabii ki 1.0 SDK ile netstandard1.X'i hedefleyebilirsiniz.
Jon Skeet

6
Tamam - bu konuda yeniyim - .net çekirdeği ve .net standardı arasındaki yakın ilişki beni şaşırttı - bu tür bağımlılıkları atlamak için .net standardı oluşturmanın nedeni değil miydi? Neden ayrı bir pakette gönderilmesin?
Marwie

1
@Marwie: .NET Core SDK, .NET Standardından ayrı olan .NET Core Runtime'dan ayrıdır. Ancak SDK bir dizi hedef çerçeveyi "biliyor" ve bunun gelecekteki bir çerçeveyle çalışmayacağına şaşırmadım . Visual Studio 2013'ün C # 7 kodunu derlemesini beklemek gibi. Muhtemelen olurdu iken uygulanabilir MS hedef netstandard2.0 için .NET Çekirdek 2.0 SDK gerek yoktu ki bunu mühendisleştirdiğimiz etmek için, IMO, bunu zaten istemek garip kullanım durumunda olacaktır.
Jon Skeet

3
Tüm .net Core 1.x SDK'larını kaldırdıktan sonra hatayı aldım. Hala Microsoft'um vardı. .NET core SDK 2.0.2, 2.0.3, 2.1.1 ve 2.1.2 yüklü ve VS 2017 5.2. Mevcut Microsoft'u manuel olarak kurduğumda. .NET core SDK (2.1.3) Projelerimi yeniden derleyebilirim. 1.x SDK'ları kaldırırken 2.x SDK'ları neyin kırdığını merak ediyorum.
SOHO Developer

2
@Justin: Tamam, bu ya 2.1.4 SDK düzgün yüklenmemiş ya da onu eski bir sürüme sabitleyen bir global.json dosyanız var gibi görünüyor.
Jon Skeet

20

Yukarıdaki cevaplar sorunumu çözmedi. Sonunda, özellikle bu bağlantıya https://www.microsoft.com/net/download/visual-studio-sdks gidip Visual Studio için gerekli sdk'yi indirerek çözdüm . Gerçekten kafa karıştırıcıydı ve nedenini anlamıyorum ama bu benim sorunumu çözdü


Buna oy veremem, bu benim de sorunumu çözdü ama umarım birisi bu çalışmanın arkasındaki nedeni açıklığa kavuşturur.
Beytan Kurt

Bu çözüm benim için de çalıştı. Benim için bu, en son SDK ile uyumsuzluk meselesiydi. Visual Studio 2017 kullanıyorsanız, .NET Core SDK'nın en son sürümünü kullanamazsınız.
sıfır

11

Benim için çözüm, sürümü global.jsonyüklü olanı yansıtacak şekilde değiştirmekti .

Diğerlerinin söylediği gibi, sürüm dotnet --infocmd'de çalışabilir

Bu:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.0.3"
  }
}

oldu:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.1.4"
  }
}

Ayrıca global.json dosyasını çalıştırarak da oluşturabilirsiniz.

dotnet new globaljson --sdk-version 2.1.4

projenin kökeninde


2
Varsa bu global.jsondosya nerede bulunur?
Bruno Bieri

Sanırım ms bu dosyayı kaldırdı, .sln ve .csproj dosyalarınızı kontrol edin :)
lsp

2
Dosya global.json, çözüm dosyasının yanında olacaktır. Genellikle çözümün kendisine bir çözüm öğesi olarak dahil ettim. Deneylerimde, çözümü kapatmadan ve yeniden yüklemeden sürümü değiştirmenin global.jsongarip yapı hatalarına yol açabileceğini buldum . Yorumum, .NET Core SDK 2.2.100 ile VS2018, sürüm 15.9.2 için geçerlidir.
Manfred

Dokümanlardan .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Bir miras türü dosyası gibi.
StuartLC

10

Bu bazen eski projelerimi açmaya çalıştığımda oluyor, bana yardımcı olan şey projelerin hedef çerçevesini değiştirmektir. Proje git -> projectname Özellikleri ... ve yüklediğinizi birine Hedef çerçevesini değiştirin. Proje özellikleri


Açılır menü benim için hiçbir şey göstermiyor. Herhangi bir fikir?
Danny

9

Bu benim için çalıştı

Visual Studio yüklemesini kullanın

"İş yükleri" sekmesinde ".Net Core çapraz platform geliştirme" yi işaretleyin ve "Değiştir" e tıklayın

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

Soldaki menüden ".NET Core 2.0 geliştirme araçları" seçeneğini işaretlemeyi unutmayın.

Kaynak

Not

Asp Net Core'u daha önce kurdum, ancak Visual Studio'mda görünmedi, Visual Studio kurulumunu kullanarak kurduktan hemen sonra bana göründü.


1
Alternatif olarak, ihtiyacınız olanı buradan yükleyebilirsiniz: dotnet.microsoft.com/download/…
user2173353

3

Visual Studio'yu 15.5.1 sürümüne yükselttiğimde, .Net Core SDK 2.X'e yükseltildi, bu nedenle bu hata ortadan kalktı. Koştuğumda dotnet --infoşimdi şunu görüyorum:

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


3

Bazı .NET Core 1.x önizleme SDK'larını kaldırdıktan sonra bunu 15.8.3 ile yeni yaşadım, uygulamam derlenmedi ve hatayı gösterdi.

Windows 10 x64 kullanmama rağmen SDK'nın en son x86 sürümünü yükleyerek düzeltildi.

Bunun nedeni VS 2017'nin hala bir x86 programı olması ve programların x64 olarak çalışmasına rağmen derleyicinin uygun bir x86 SDK araması olduğunu düşünüyorum.


3

Hem Visual Studio 2019 hem de 2017 yüklemelerim vardı. VS2017 için .NET Core 2.X SDK'yı ayrı olarak yüklemeyi denedim, ancak şanssızdı.

Sorun şu ki , VS2017'nin beğenmediği varsayılan sdk sürümü olarak .NET Core 3.0 SDK'nın yüklü olması.

Benim çözümüm, belirli bir proje için SDK sürümünü değiştirmekti.

  • Öncelikle, istediğiniz sürümü bulmak için yüklü SDK'larınızı listeleyin :
$ dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.18362
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.100\

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  1.1.14 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.110 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]
  • Senin Gönderen çözüm dizinine :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Şimdi, dotnet bu çözüm için belirtilen SDK sürümünü kullanacak.

3.0 projelerimi de bozmadan bu sistem çapında yapmanın bir yolunu bulamadım.


Bunun gerekli olması garip görünüyor, ancak bir global.json'u (2.1.513 sürümü için) açmak da sorunumu çözdü.
8128

2

Aslında bana başka cevapların tersi oldu.

Ben yüklemek did son .NET Çekirdek SDK sorunu ortaya çıktı önce değil Visual Studio en son sürümünü (yani herhangi bir fark yaratacağını emin değilse) sahip (benim durumumda 3.0.0-preview2).

Yani çözüm , en son .NET Core SDK'yı kaldırmaktı . (İhtiyacınız varsa bu mükemmel değildir, bu nedenle Visual Studio'nun en son sürüme yükseltilmesini düşünebilirsiniz, ancak en azından bu devam eden sorunu çözmüştür).


1

Ben sadece bu sıkıntıyı yaşadım. Benim durumumda bir çalışma senaryom vardı

SET devenvPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe
"%devenvPath%" mySolution.sln /Rebuild "DebugWithUT|AnyCpu" /Out mySolution.Build.log

Bugün tam olarak bu hatayı almaya başladım. Ama şimdi VS2019'u bir gün önce kurduğumu hatırlıyorum. VS2017 için bir şeyi değiştirmiş gibi görünüyor. VS2017 Güncellemesine gittim, en son sürümü / güncellemeyi yükledim ve tekrar düzelttim.


0

Aynı sorunu yaşadım ve en son Microsoft Visual Studio Community 2017 Sürüm 15.7.3'e sahibim

En son SDK 2.1'i yeni indirdim ve artık hedefleme sorunu yok. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Bilgi: Microsoft Visual Studio Community 2017 Sürüm 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework Sürüm 4.7.03056

Yüklü Sürüm: Topluluk

C # Tools 2.8.3-beta6-62923-07. Commit Hash: IDE'de kullanılan 7aafab561e449da50712e16c9e81742b8e7a2969 C # bileşenleri. Proje türünüze ve ayarlarınıza bağlı olarak, derleyicinin farklı bir sürümü kullanılabilir.

Ortak Azure Araçları 1.10 Azure Mobil Hizmetleri ve Microsoft Azure Araçları tarafından kullanılmak üzere ortak hizmetler sağlar.

NuGet Paket Yöneticisi 4.6.0 NuGet Paket Yöneticisi Visual Studio'da. NuGet hakkında daha fazla bilgi için http://docs.nuget.org/ adresini ziyaret edin .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Ayrıntılı Bilgi

ResourcePackage Uzantısı 1.0 ResourcePackage Visual Studio Uzantısı Ayrıntılı Bilgi

Visual Basic Tools 2.8.3-beta6-62923-07. Karma İşlemi: IDE'de kullanılan 7aafab561e449da50712e16c9e81742b8e7a2969 Visual Basic bileşenleri. Proje türünüze ve ayarlarınıza bağlı olarak, derleyicinin farklı bir sürümü kullanılabilir.

Visual Studio Code Hata Ayıklama Bağdaştırıcısı Ana Bilgisayar Paketi 1.0 Visual Studio'da Visual Studio Code hata ayıklama bağdaştırıcılarını barındırmak için birlikte çalışma katmanı

Unity için Visual Studio Araçları 3.7.0.1 Unity için Visual Studio Araçları


0

visual studio için yalnızca x64 SDK yerine x86 SDK'yı indirdiğinizden emin olun.


0

Mevcut .NET SDK'nın .NET Core 3.1'i hedeflemeyi desteklememesiyle aynı sorunu yaşadım. .NET Core 1.1 veya altını hedefleyin ya da .NET SDK'nın .NET Core 3.1'i destekleyen bir sürümünü kullanın

1) .Net core SDK'nın makinenizde kurulu olduğundan emin olun. .NET'i indirin !

2) PATH ortam değişkenlerini Yolun altındaki gibi ayarlayın


0

Çözümümü TFS'de oluşturmaya çalışırken bu sorunu yaşadım. "Dot net publish" görevini kullanıyorduk. Msbuild kullanmak bizim için buzu kırdı.

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.