.NET SDK saat ini tidak mendukung penargetan .NET Standard 2.0 kesalahan dalam Visual Studio 2017 pemutakhiran 15.3

119

Saya ingin membuat proyek perpustakaan kelas dengan Target Framework .NET Standard 2.0.

Saya telah memperbarui saya Visual Studio 2017ke Versi 15.3dan juga di penginstal Visual Studio memeriksa .NET Framework 4.7 SDKdan .NET Framework 4.7 targeting packsecara manual dan menginstalnya.

Masih belum ada .NET Standard 2.0opsi di kotak kombo Target Framework di jendela Proyek / Aplikasi. Jadi saya mengubah tag TargetFramework dalam .csprojfile secara manual menjadi netstandard2.0, tetapi setelah mencoba membangun saya mendapatkan kesalahan ini:

.NET SDK saat ini tidak mendukung penargetan .NET Standard 2.0. Targetkan .NET Standard 1.6 atau lebih rendah, atau gunakan versi .NET SDK yang mendukung .NET Standard 2.0.

sahar
sumber
4
Apakah Anda memiliki global.jsonfile yang menyematkan .NET Core SDK ke 1.x? Sudahkah Anda menginstal .NET Core 2.0 SDK secara terpisah? (Saya berharap itu akan disertakan dengan VS, tetapi tidak ada salahnya untuk menginstalnya.)
Jon Skeet
1
@JonSkeet menginstal .NET Core 2.0 SDK secara terpisah bekerja. Akan lebih baik jika Anda menambahkan saran Anda sebagai jawaban di sini.
sahar

Jawaban:

144

Sepertinya menginstal pembaruan VS2017 untuk versi khusus itu tidak juga menginstal .NET Core 2.0 SDK. Anda dapat mendownloadnya di sini .

Untuk memeriksa versi SDK mana yang sudah Anda instal, jalankan

dotnet --info

dari baris perintah. Perhatikan bahwa jika ada global.jsonfile di direktori kerja Anda saat ini atau direktori leluhur apa pun, itu akan mengganti versi SDK mana yang dijalankan. (Itu berguna jika Anda ingin menerapkan versi tertentu untuk sebuah proyek, misalnya.)

Dilihat dari komentar, beberapa versi pembaruan VS2017 memang menginstal .NET Core SDK. Saya menduga ini mungkin berbeda dari waktu ke waktu.

Jon Skeet
sumber
1
@ Marwie: Untuk menargetkan netstandard2.0, saya curiga Anda melakukannya. Saya belum mencoba menargetkannya dengan SDK 1.0, tetapi saya tidak akan terkejut jika gagal. Anda masih dapat menargetkan netstandard1.X dengan SDK 1.0 tentunya.
Jon Skeet
6
Oke - Saya baru mengenal subjek ini - Saya terkejut tentang hubungan dekat antara inti .net dan standar .net - bukankah alasan untuk membuat standar .net untuk menghilangkan dependensi seperti itu? Mengapa tidak dikirimkan dalam paket terpisah?
Marwie
1
@ Marwie: Ya, .NET Core SDK terpisah dari .NET Core Runtime, yang terpisah dari .NET Standard. Namun SDK "tahu tentang" sekumpulan kerangka kerja target, dan saya tidak terkejut bahwa itu tidak akan berfungsi dengan kerangka kerja yang akan datang . Ini seperti mengharapkan Visual Studio 2013 untuk mengkompilasi kode C # 7. Meskipun mungkin mungkin bagi MS untuk merekayasa itu sehingga Anda tidak memerlukan .NET Core 2.0 SDK untuk menargetkan netstandard2.0, itu akan menjadi kasus penggunaan yang aneh untuk menginginkannya, IMO.
Jon Skeet
3
Saya menerima kesalahan setelah saya menghapus semua .net Core 1.x SDK. Saya masih memiliki Microsoft. .NET core SDK 2.0.2, 2.0.3, 2.1.1 dan 2.1.2 diinstal dan VS 2017 5.2. Setelah saya melakukan instalasi manual dari Microsoft saat ini. .NET core SDK (2.1.3) Saya bisa lagi mengkompilasi proyek saya. Saya ingin tahu apa dalam menghapus 1.x SDK yang merusak 2.x SDK.
Pengembang SOHO
2
@Justin: Oke, sepertinya SDK 2.1.4 belum diinstal dengan benar, atau Anda memiliki file global.json yang menyematkannya ke versi lama.
Jon Skeet
20

sedangkan jawaban di atas tidak menyelesaikan masalah saya. Saya akhirnya menyelesaikannya dengan secara khusus membuka tautan ini https://www.microsoft.com/net/download/visual-studio-sdks dan mengunduh sdk yang diperlukan untuk Visual Studio . Itu benar-benar membingungkan dan saya tidak mengerti mengapa tetapi itu menyelesaikan masalah saya

Johnny Camby
sumber
Saya tidak bisa begitu saja memberi suara positif, ini juga menyelesaikan masalah saya juga, tetapi saya harap seseorang menjelaskan alasan di balik ini berfungsi.
Beytan Kurt
Solusi ini juga berhasil untuk saya. Bagi saya itu masalah ketidakcocokan dengan SDK terbaru. Jika Anda menggunakan Visual Studio 2017, Anda tidak dapat menggunakan versi terbaru .NET Core SDK.
nol
11

Bagi saya solusinya adalah mengubah versi global.jsonuntuk mencerminkan versi yang diinstal.

Seperti yang dikatakan orang lain, versinya dapat ditemukan berjalan dotnet --infodi cmd

Ini:

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

Menjadi:

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

Anda juga dapat membuat file global.json dengan menjalankan

dotnet new globaljson --sdk-version 2.1.4

di root proyek

lsp
sumber
2
Di mana global.jsonfile itu ditemukan jika ada?
Bruno Bieri
Saya pikir ms menghapus file itu, periksa file .sln dan .csproj Anda :)
lsp
2
File tersebut global.jsonakan berada di sebelah file solusi. Saya biasanya telah memasukkan sebagai item solusi dalam solusi itu sendiri. Saya menemukan dalam eksperimen saya bahwa tanpa menutup dan memuat ulang solusi, mengubah versi dalam global.jsondapat menyebabkan kesalahan pembuatan yang aneh. Komentar saya berlaku untuk VS2018, versi 15.9.2, dengan .NET Core SDK 2.2.100.
Manfred
Dari dokumen .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Jadi seperti file tipe warisan.
StuartLC
10

Ini kadang-kadang terjadi ketika saya mencoba membuka proyek lama saya, yang membantu saya adalah mengubah kerangka target proyek. Pergi ke Project -> projectname Properties ... dan ubah kerangka kerja Target ke kerangka kerja yang telah Anda instal. Properti proyek

H35am
sumber
Menu drop-down tidak menampilkan apa pun untuk saya. Ada ide?
Danny
9

Ini berhasil untuk saya

Gunakan instalasi Visual Studio

Pada tab "Beban Kerja", centang "Pengembangan lintas platform .Net Core" dan klik "Ubah"

masukkan deskripsi gambar di sini

Jangan lupa untuk memeriksa ".NET Core 2.0 development tools" di menu sebelah kiri.

Sumber

Catatan

Saya menginstal Asp Net Core sebelumnya, namun tidak muncul di Visual Studio saya, setelah saya menginstal menggunakan penginstalan Visual Studio muncul untuk saya.

Wictor Chaves
sumber
1
Atau, Anda dapat menginstal apa yang Anda butuhkan dari sini: dotnet.microsoft.com/download/…
user2173353
3

Ketika saya memutakhirkan Visual Studio ke versi 15.5.1, .Net Core SDK ditingkatkan menjadi 2.X, jadi kesalahan ini hilang. Ketika saya berlari dotnet --info, saya melihat yang berikut sekarang:

masukkan deskripsi gambar di sini

Johnny Oshika
sumber
3

Saya baru saja mengalami ini dengan 15.8.3 setelah mencopot beberapa SDK pratinjau .NET Core 1.x, aplikasi saya tidak akan mengkompilasi dan menunjukkan kesalahan.

Itu diperbaiki dengan menginstal versi x86 SDK terbaru meskipun saya menggunakan Windows 10 x64.

Saya menganggap ini karena VS 2017 masih merupakan program x86 dan meskipun program dijalankan sebagai x64, kompiler sedang mencari SDK x86 yang sesuai

Paul Hatcher
sumber
3

Saya memiliki instalasi Visual Studio 2019 dan 2017. Saya mencoba menginstal .NET Core 2.X SDK untuk VS2017 secara terpisah tetapi tidak berhasil.

Masalahnya adalah, saya memiliki .NET Core 3.0 SDK yang diinstal sebagai versi sdk default , yang tidak disukai VS2017.

Solusi saya adalah mengganti versi SDK untuk proyek tertentu.

  • Pertama, daftarkan SDK yang Anda instal untuk menemukan versi yang diinginkan :
$ 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]
  • Dari direktori solusi Anda :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Sekarang, dotnetakan menggunakan versi SDK yang ditentukan untuk solusi ini.

Saya belum menemukan cara untuk melakukan ini di seluruh sistem tanpa juga mengacaukan proyek 3.0 saya.

J. Doeseph
sumber
Tampaknya aneh bahwa ini perlu, tetapi memberi greating global.json (untuk versi 2.1.513) memecahkan masalah saya juga.
8128
2

Sebenarnya, bagi saya itu terjadi berlawanan dengan jawaban lain.

Saya menginstal .NET Core SDK terbaru sebelum masalah muncul (3.0.0-preview2 dalam kasus saya) karena tidak memiliki versi terbaru dari Visual Studio (tidak yakin apakah itu akan membuat perbedaan).

Jadi, solusinya hanya mencopot .NET Core SDK terbaru itu . (Ini tidak sempurna jika Anda membutuhkannya, jadi Anda mungkin mempertimbangkan peningkatan Visual Studio ke yang terbaru, tapi setidaknya itu memecahkan masalah yang sedang berlangsung).

Agat
sumber
1

Saya baru saja mengalami masalah ini. Dalam kasus saya, saya memiliki skrip kerja

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

Hari ini saya mulai mendapatkan kesalahan persis seperti ini. Tapi sekarang saya ingat menginstal VS2019 sehari sebelumnya. Sepertinya itu mengubah sesuatu untuk VS2017. Saya pergi ke Pembaruan VS2017, menginstal versi / pembaruan terbaru dan memperbaikinya kembali.

TS
sumber
0

Saya mengalami masalah yang sama, dan memiliki versi terbaru Microsoft Visual Studio Community 2017 Versi 15.7.3

Saya baru saja mengunduh SDK 2.1 terbaru dan tidak ada lagi masalah penargetan. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Info: Microsoft Visual Studio Community 2017 Versi 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework Versi 4.7.03056

Versi Terpasang: Komunitas

C # Tools 2.8.3-beta6-62923-07. Hash Komit: 7aafab561e449da50712e16c9e81742b8e7a2969 C # komponen yang digunakan dalam IDE. Bergantung pada jenis dan pengaturan proyek Anda, versi compiler yang berbeda dapat digunakan.

Alat Azure Umum 1.10 Menyediakan layanan umum untuk digunakan oleh Layanan Seluler Azure dan Alat Microsoft Azure.

NuGet Package Manager 4.6.0 NuGet Package Manager di Visual Studio. Untuk informasi lebih lanjut tentang NuGet, kunjungi http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 Info Detail ProjectServicesPackage Ekstensi Visual Studio

ResourcePackage Ekstensi 1.0 ResourcePackage Visual Studio Ekstensi Detil Info

Alat Visual Basic 2.8.3-beta6-62923-07. Hash Komit: 7aafab561e449da50712e16c9e81742b8e7a2969 Komponen Visual Basic yang digunakan dalam IDE. Bergantung pada jenis dan pengaturan proyek Anda, versi compiler yang berbeda dapat digunakan.

Visual Studio Code Debug Adapter Paket Host 1.0 Interop lapisan untuk hosting adaptor debug kode Visual Studio di Visual Studio

Alat Visual Studio untuk Unity 3.7.0.1 Alat Visual Studio untuk Persatuan

islandTraderFX
sumber
0

pastikan Anda mendownload x86 SDK, bukan hanya x64 SDK untuk visual studio.

juFo
sumber
0

Saya memiliki masalah yang sama karena .NET SDK saat ini tidak mendukung penargetan .NET Core 3.1. Targetkan .NET Core 1.1 atau yang lebih rendah, atau gunakan versi .NET SDK yang mendukung .NET Core 3.1

1) Pastikan. SDK inti bersih diinstal pada mesin Anda. Unduh .NET !

2) set variabel lingkungan PATH seperti di bawah ini Path

Arjun Dasari
sumber
0

Saya mengalami masalah ini saat mencoba membangun solusi saya di TFS. Kami menggunakan tugas "dot net publish". Menggunakan msbuild memecahkan kebekuan bagi kami.

Potatojaisiladki
sumber