NET SDK ปัจจุบันไม่สนับสนุนการกำหนดเป้าหมายข้อผิดพลาด. NET Standard 2.0 ในการอัปเดต Visual Studio 2017 15.3


119

ฉันต้องการสร้างโปรเจ็กต์ไลบรารีคลาสด้วย Target Framework .NET Standard 2.0

ผมได้ปรับปรุงของฉันVisual Studio 2017ไปเป็นเวอร์ชั่น15.3และยังอยู่ในการติดตั้ง Visual Studio การตรวจสอบ.NET Framework 4.7 SDKและ.NET Framework 4.7 targeting packด้วยตนเองและติดตั้งพวกเขา

ยังไม่มี.NET Standard 2.0ตัวเลือกในกล่องคำสั่งผสม Target Framework ในหน้าต่างโครงการ / แอปพลิเคชัน ดังนั้นฉันจึงเปลี่ยนแท็ก TargetFramework ใน.csprojไฟล์ด้วยตนเองเป็นnetstandard2.0แต่หลังจากพยายามสร้างฉันได้รับข้อผิดพลาดนี้:

.NET SDK ปัจจุบันไม่สนับสนุนการกำหนดเป้าหมาย. NET Standard 2.0 กำหนดเป้าหมาย. NET Standard 1.6 หรือต่ำกว่าหรือใช้. NET SDK เวอร์ชันที่รองรับ. NET Standard 2.0


4
คุณมีglobal.jsonไฟล์ที่ตรึง. NET Core SDK ไว้ที่ 1.x หรือไม่? คุณได้ติดตั้ง. NET Core 2.0 SDK แยกต่างหากหรือไม่? (ฉันคาดหวังว่ามันจะรวมกับ VS แต่คงไม่เจ็บที่จะติดตั้งอยู่ดี)
Jon Skeet

1
@JonSkeet การติดตั้ง. NET Core 2.0 SDK แยกกันทำงาน จะเป็นการดีหากคุณเพิ่มคำแนะนำของคุณเป็นคำตอบที่นี่
sahar

คำตอบ:


144

ดูเหมือนว่าการติดตั้งการอัปเดต VS2017 สำหรับเวอร์ชันนั้นไม่ได้ติดตั้ง. NET Core 2.0 SDK ด้วย คุณสามารถดาวน์โหลดได้นี่

หากต้องการตรวจสอบว่าคุณได้ติดตั้ง SDK เวอร์ชันใดแล้วให้เรียกใช้

dotnet --info

จากบรรทัดคำสั่ง โปรดทราบว่าหากมีไฟล์global.jsonไฟล์อยู่ในไดเร็กทอรีการทำงานปัจจุบันของคุณหรือไดเร็กทอรีบรรพบุรุษใด ๆ สิ่งนั้นจะแทนที่เวอร์ชันของ SDK ที่เรียกใช้ (ซึ่งจะมีประโยชน์หากคุณต้องการบังคับใช้เวอร์ชันเฉพาะสำหรับโครงการเป็นต้น)

เมื่อพิจารณาจากความคิดเห็นการอัปเดต VS2017 บางเวอร์ชันจะติดตั้ง. NET Core SDK ฉันสงสัยว่ามันอาจเปลี่ยนแปลงไปบ้างตามกาลเวลา


1
@Marwie: เพื่อกำหนดเป้าหมาย netstandard2.0 ฉันสงสัยว่าคุณทำ ฉันไม่ได้ลองกำหนดเป้าหมายด้วย 1.0 SDK แต่ฉันจะไม่แปลกใจถ้ามันล้มเหลว คุณยังคงสามารถกำหนดเป้าหมาย netstandard1.X ด้วย 1.0 SDK ได้
Jon Skeet

6
โอเค - ฉันยังใหม่กับเรื่องนี้ - ฉันรู้สึกประหลาดใจเกี่ยวกับความสัมพันธ์ที่ใกล้ชิดระหว่าง. net core และ. net standard - ไม่ใช่เหตุผลที่จะสร้างมาตรฐาน. net เพื่อละเว้นการอ้างอิงเช่นนั้นหรือ เหตุใดจึงไม่จัดส่งในแพ็คเกจแยกต่างหาก?
Marwie

1
@ Marwie: ดี. NET Core SDK แยกจาก. NET Core Runtime ซึ่งแยกจาก. NET Standard แต่ SDK "รู้เกี่ยวกับ" ชุดของกรอบเป้าหมายและฉันไม่แปลกใจว่ามันจะไม่ทำงานกับอนาคตอย่างใดอย่างหนึ่ง เหมือนกับการคาดหวังให้ Visual Studio 2013 รวบรวมโค้ด C # 7 แม้ว่าจะเป็นไปได้ที่ MS จะได้รับการออกแบบทางวิศวกรรมดังนั้นคุณจึงไม่จำเป็นต้องใช้.
Jon Skeet

3
ฉันได้รับข้อผิดพลาดหลังจากถอนการติดตั้ง. net Core 1.x SDK ทั้งหมด ฉันยังมี Microsoft .NET core SDK 2.0.2, 2.0.3, 2.1.1 และ 2.1.2 ติดตั้งและ VS 2017 5.2 เมื่อฉันติดตั้ง Microsoft. .NET core SDK (2.1.3) ฉันสามารถรวบรวมโครงการของฉันได้อีกครั้ง ฉันสงสัยว่าการลบ 1.x SDKs ทำให้ 2.x SDKs เสียหายอย่างไร
SOHO Developer

2
@ จัสติน: โอเคดูเหมือนว่า 2.1.4 SDK ยังไม่ได้ติดตั้งอย่างถูกต้องหรือคุณมีไฟล์ global.json ที่ปักหมุดเป็นเวอร์ชันเก่า
Jon Skeet

20

ในขณะที่คำตอบข้างต้นไม่สามารถแก้ปัญหาของฉันได้ ในที่สุดผมก็แก้ไขได้โดยเฉพาะไปที่ลิงค์นี้https://www.microsoft.com/net/download/visual-studio-sdksและดาวน์โหลดจำเป็นSDK สำหรับ Visual Studio มันสับสนมากและฉันไม่เข้าใจว่าทำไม แต่มันช่วยแก้ปัญหาของฉันได้


ฉันไม่สามารถโหวตเพิ่มได้ แต่สิ่งนี้ก็ช่วยแก้ปัญหาของฉันได้เช่นกัน แต่ฉันหวังว่าจะมีคนชี้แจงเหตุผลเบื้องหลังการทำงานนี้
Beytan Kurt

วิธีนี้ใช้ได้ผลสำหรับฉันเช่นกัน สำหรับฉันมันเป็นเรื่องของความเข้ากันไม่ได้กับ SDK ล่าสุด หากคุณใช้ Visual Studio 2017 คุณจะไม่สามารถใช้. NET Core SDK เวอร์ชันล่าสุดได้
ศูนย์

11

สำหรับฉันวิธีแก้ปัญหาคือการเปลี่ยนเวอร์ชันใน global.jsonเพื่อให้สอดคล้องกับที่ติดตั้ง

เช่นเดียวกับคนอื่น ๆ กล่าวว่ารุ่นนี้สามารถพบได้ dotnet --infoใน cmd

นี้:

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

กลายเป็น:

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

คุณยังสามารถสร้างไฟล์ global.json โดยเรียกใช้

dotnet new globaljson --sdk-version 2.1.4

ที่รากของโครงการ


2
ไหนจะว่าglobal.jsonไฟล์จะพบว่ามันจะอยู่?
Bruno Bieri

ฉันคิดว่า ms ลบไฟล์นั้นตรวจสอบไฟล์. sln และ. csproj ของคุณ :)
lsp

2
ไฟล์global.jsonจะอยู่ถัดจากไฟล์โซลูชัน โดยปกติฉันจะรวมเป็นรายการโซลูชันในโซลูชันนั้นเอง ฉันพบในการทดลองของฉันว่าหากไม่มีการปิดและโหลดโซลูชันใหม่การเปลี่ยนเวอร์ชันglobal.jsonอาจทำให้เกิดข้อผิดพลาดในการสร้างที่แปลกประหลาด ความคิดเห็นของฉันใช้กับ VS2018 เวอร์ชัน 15.9.2 พร้อม. NET Core SDK 2.2.100
Manfred

.NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directoriesจากเอกสาร เช่นเดียวกับไฟล์ประเภทการสืบทอด
StuartLC

10

สิ่งนี้เกิดขึ้นบางครั้งเมื่อฉันพยายามเปิดโครงการเก่าสิ่งที่ช่วยฉันได้คือเปลี่ยนกรอบเป้าหมายของโครงการ ไปที่ Project -> projectname Properties ... และเปลี่ยน Target framework เป็นเฟรมที่คุณติดตั้งไว้ คุณสมบัติของโครงการ


เมนูแบบเลื่อนลงไม่แสดงอะไรเลย ความคิดใด ๆ ?
Danny

9

สิ่งนี้ได้ผลสำหรับฉัน

ใช้การติดตั้ง Visual Studio

ที่แท็บ "Workloads" ตรวจสอบ ".Net Core cross-platform development" และคลิกที่ "Modify"

ใส่คำอธิบายภาพที่นี่

อย่าลืมตรวจสอบ ".NET Core 2.0 development tools" ที่เมนูด้านซ้าย

แหล่ง

บันทึก

ฉันติดตั้ง Asp Net Core มาก่อน แต่ไม่ปรากฏบน Visual Studio ของฉันหลังจากที่ฉันติดตั้งโดยใช้การติดตั้ง Visual Studio ก็ปรากฏให้ฉันเห็น


1
หรือคุณสามารถติดตั้งสิ่งที่คุณต้องการได้จากที่นี่: dotnet.microsoft.com/download/…
user2173353

3

เมื่อฉันอัปเกรด Visual Studio เป็นเวอร์ชัน 15.5.1, .Net Core SDK ได้รับการอัปเกรดเป็น 2.X ข้อผิดพลาดนี้จึงหายไป เมื่อฉันวิ่งdotnet --infoฉันจะเห็นสิ่งต่อไปนี้:

ใส่คำอธิบายภาพที่นี่


3

ฉันเพิ่งมีสิ่งนี้กับ 15.8.3 หลังจากถอนการติดตั้ง SDK ตัวอย่าง. NET Core 1.x บางตัวแอปพลิเคชันของฉันจะไม่รวบรวมและแสดงข้อผิดพลาด

ได้รับการแก้ไขโดยการติดตั้ง SDK เวอร์ชัน x86 ล่าสุดแม้ว่าฉันจะใช้ Windows 10 x64 ก็ตาม

ฉันคิดว่านี่เป็นเพราะ VS 2017 ยังคงเป็นโปรแกรม x86 และแม้ว่าโปรแกรมจะทำงานเป็น x64 แต่คอมไพเลอร์ก็กำลังมองหา x86 SDK ที่เหมาะสม


3

ฉันติดตั้งทั้ง Visual Studio 2019 และ 2017 ฉันลองติดตั้ง. NET Core 2.X SDK สำหรับ VS2017 แยกกัน แต่โชคไม่ดี

ปัญหาคือฉันติดตั้ง. NET Core 3.0 SDK เป็น sdk-version เริ่มต้นแล้วซึ่ง VS2017 ไม่ชอบ

วิธีแก้ปัญหาของฉันคือเปลี่ยนเวอร์ชัน SDK สำหรับโครงการเฉพาะ

  • ขั้นแรกให้ระบุ SDK ที่ติดตั้งของคุณเพื่อค้นหาเวอร์ชันที่ต้องการ :
$ 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]
  • จากไดเร็กทอรีโซลูชันของคุณ:
$ dotnet new globaljson --sdk-version 2.2.110 --force

ตอนนี้dotnetจะใช้เวอร์ชัน SDK ที่ระบุสำหรับโซลูชันนี้

ฉันไม่พบวิธีที่จะทำสิ่งนี้ทั้งระบบโดยไม่ทำให้โครงการ 3.0 ของฉันวุ่นวาย


ดูเหมือนจะแปลกที่สิ่งนี้ควรจำเป็น แต่การใช้ global.json (สำหรับเวอร์ชัน 2.1.513) ก็ช่วยแก้ปัญหาของฉันได้เช่นกัน
8128

2

ที่จริงแล้วสำหรับฉันแล้วมันเกิดขึ้นในทางตรงกันข้ามกับคำตอบอื่น

ฉันติดตั้ง . NET Core SDK ล่าสุด ก่อนที่ปัญหาจะปรากฏขึ้น (3.0.0-preview2 ในกรณีของฉัน) โดยไม่มี Visual Studio เวอร์ชันล่าสุด (ไม่แน่ใจว่าจะสร้างความแตกต่างหรือไม่)

ดังนั้นวิธีแก้ปัญหาก็แค่ถอนการติดตั้ง. NET Core SDK ล่าสุดนั้น (สิ่งนี้ไม่สมบูรณ์แบบหากคุณต้องการดังนั้นคุณอาจพิจารณาอัปเกรด Visual Studio เป็นเวอร์ชันล่าสุด แต่อย่างน้อยก็แก้ไขปัญหาที่กำลังดำเนินอยู่ได้)


1

ฉันเพิ่งผ่านปัญหานี้ ในกรณีของฉันฉันมีสคริปต์ที่ใช้งานได้

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

วันนี้ฉันเริ่มได้รับข้อผิดพลาดที่แน่นอนนี้ แต่ตอนนี้ฉันจำได้ว่าติดตั้ง VS2019 เมื่อวันก่อน ดูเหมือนว่าจะมีการเปลี่ยนแปลงบางอย่างสำหรับ VS2017 ฉันไปที่อัพเดต VS2017 ติดตั้งเวอร์ชันล่าสุด / อัปเดตและแก้ไขกลับ


0

ฉันมีปัญหาเดียวกันและมีเวอร์ชันล่าสุดของ Microsoft Visual Studio Community 2017 เวอร์ชัน 15.7.3

ฉันเพิ่งดาวน์โหลด SDK 2.1 ล่าสุดและไม่มีปัญหาการกำหนดเป้าหมายอีกต่อไป https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

ข้อมูล: Microsoft Visual Studio Community 2017 เวอร์ชัน 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework เวอร์ชัน 4.7.03056

เวอร์ชันที่ติดตั้ง: ชุมชน

เครื่องมือ C # 2.8.3-beta6-62923-07 คอมมิตแฮช: 7aafab561e449da50712e16c9e81742b8e7a2969 ส่วนประกอบ C # ที่ใช้ใน IDE อาจใช้คอมไพเลอร์เวอร์ชันอื่นทั้งนี้ขึ้นอยู่กับประเภทโครงการและการตั้งค่าของคุณ

Common Azure Tools 1.10 ให้บริการทั่วไปสำหรับการใช้งานโดย Azure Mobile Services และ Microsoft Azure Tools

NuGet Package Manager 4.6.0 NuGet Package Manager ใน Visual Studio ดูข้อมูลเพิ่มเติมเกี่ยวกับ NuGet ได้ที่http://docs.nuget.org/ http://docs.nuget.org/

ProjectServicesPackage Extension 1.0 ข้อมูลรายละเอียดส่วนขยาย ProjectServicesPackage Visual Studio

ข้อมูลรายละเอียดส่วนขยาย ResourcePackage 1.0 ส่วนขยาย ResourcePackage Visual Studio

เครื่องมือ Visual Basic 2.8.3-beta6-62923-07 Commit Hash: 7aafab561e449da50712e16c9e81742b8e7a2969 คอมโพเนนต์ Visual Basic ที่ใช้ใน IDE อาจใช้คอมไพเลอร์เวอร์ชันอื่นทั้งนี้ขึ้นอยู่กับประเภทโครงการและการตั้งค่าของคุณ

Visual Studio Code Debug Adapter Host Package 1.0 เลเยอร์ Interop สำหรับโฮสต์อะแด็ปเตอร์ดีบัก Visual Studio Code ใน Visual Studio

Visual Studio Tools for Unity 3.7.0.1 Visual Studio Tools for Unity


0

ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลด x86 SDK แทนที่จะเป็น x64 SDK สำหรับวิชวลสตูดิโอเท่านั้น


0

ฉันมีปัญหาเดียวกันกับ. NET SDK ปัจจุบันไม่รองรับการกำหนดเป้าหมาย. NET Core 3.1 กำหนดเป้าหมาย. NET Core 1.1 หรือต่ำกว่าหรือใช้. NET SDK เวอร์ชันที่รองรับ. NET Core 3.1

1) ตรวจสอบให้แน่ใจว่าติดตั้ง. Net core SDK ในเครื่องของคุณแล้ว ดาวน์โหลด. NET !

2) ตั้งค่าตัวแปรสภาพแวดล้อม PATH ตามด้านล่าง Path


0

ฉันมีปัญหานี้ขณะพยายามสร้างโซลูชันใน TFS เราใช้งาน "dot net published" การใช้ msbuild ทำลายน้ำแข็งสำหรับเรา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.