SDK .NET hiện tại không hỗ trợ nhắm mục tiêu. Lỗi .NET Standard 2.0 trong bản cập nhật Visual Studio 2017 15.3


119

Tôi muốn tạo một dự án thư viện lớp với Target Framework .NET Standard 2.0.

Tôi đã cập nhật của tôi Visual Studio 2017để bản 15.3và cũng trong Visual Studio cài đặt kiểm tra .NET Framework 4.7 SDK.NET Framework 4.7 targeting packbằng tay và cài đặt chúng.

Vẫn không có .NET Standard 2.0tùy chọn nào trong hộp kết hợp Khung mục tiêu trong cửa sổ Dự án / Ứng dụng. Vì vậy, tôi đã thay đổi thẻ TargetFramework trong .csprojtệp theo cách thủ công thành netstandard2.0, nhưng sau khi cố gắng tạo, tôi gặp lỗi này:

.NET SDK hiện tại không hỗ trợ nhắm mục tiêu .NET Standard 2.0. Nhắm mục tiêu .NET Standard 1.6 trở xuống hoặc sử dụng phiên bản .NET SDK hỗ trợ .NET Standard 2.0.


4
Bạn có global.jsontệp đang ghim .NET Core SDK của mình thành 1.x không? Bạn đã cài đặt riêng .NET Core 2.0 SDK chưa? (Tôi muốn mong đợi nó để được bao gồm với VS, nhưng nó sẽ không làm tổn thương để cài đặt nó anyway.)
Jon Skeet

1
@JonSkeet cài đặt .NET Core 2.0 SDK hoạt động riêng. Sẽ rất tốt nếu bạn thêm gợi ý của mình làm câu trả lời ở đây.
sahar

Câu trả lời:


144

Có vẻ như cài đặt bản cập nhật VS2017 cho phiên bản cụ thể đó cũng không cài đặt .NET Core 2.0 SDK. Bạn có thể tải xuống tại đây .

Để kiểm tra phiên bản SDK bạn đã cài đặt, hãy chạy

dotnet --info

từ dòng lệnh. Lưu ý rằng nếu có một global.jsontệp trong thư mục làm việc hiện tại của bạn hoặc bất kỳ thư mục gốc nào, thì tệp đó sẽ ghi đè phiên bản SDK đang chạy. (Điều đó hữu ích nếu bạn muốn thực thi một phiên bản cụ thể cho một dự án chẳng hạn.)

Đánh giá bằng nhận xét, một số phiên bản của bản cập nhật VS2017 cài đặt .NET Core SDK. Tôi nghi ngờ nó có thể thay đổi đôi chút theo thời gian.


1
@Marwie: Để nhắm mục tiêu netstandard2.0, tôi nghi ngờ bạn làm vậy. Tôi chưa thử nhắm mục tiêu đó với SDK 1.0, nhưng tôi sẽ không ngạc nhiên nếu nó không thành công. Tất nhiên, bạn vẫn có thể nhắm mục tiêu netstandard1.X với SDK 1.0.
Jon Skeet

6
Được rồi - Tôi mới làm quen với chủ đề này - Tôi đã rất ngạc nhiên về mối quan hệ chặt chẽ giữa lõi .net và tiêu chuẩn .net - không phải là lý do để tạo ra tiêu chuẩn .net để loại bỏ những phụ thuộc như vậy sao? Tại sao nó không được vận chuyển trong một gói riêng?
Marwie

1
@Marwie: Chà, .NET Core SDK tách biệt với .NET Core Runtime, tách biệt với .NET Standard. Nhưng SDK "biết về" một tập hợp các khung mục tiêu và tôi không ngạc nhiên rằng nó sẽ không hoạt động với một khung trong tương lai . Nó giống như mong đợi Visual Studio 2013 biên dịch mã C # 7. Mặc dù có thể là khả thi khi MS đã thiết kế nó để bạn không cần .NET Core 2.0 SDK để nhắm mục tiêu netstandard2.0, nhưng dù sao thì vẫn sẽ là một trường hợp sử dụng kỳ lạ nếu muốn điều đó, IMO.
Jon Skeet

3
Tôi đã gặp lỗi sau khi gỡ cài đặt tất cả SDK .net Core 1.x. Tôi vẫn có Microsoft. .NET core SDK 2.0.2, 2.0.3, 2.1.1 và 2.1.2 đã được cài đặt và VS 2017 5.2. Một khi tôi đã cài đặt thủ công Microsoft hiện tại. .NET core SDK (2.1.3) Tôi có thể biên dịch lại các dự án của mình. Tôi tự hỏi điều gì trong việc xóa SDK 1.x đã phá vỡ SDK 2.x.
Nhà phát triển SOHO

2
@Justin: Được rồi, có vẻ như SDK 2.1.4 chưa được cài đặt đúng cách hoặc bạn có tệp global.json đang ghim nó vào phiên bản cũ.
Jon Skeet

20

trong khi các câu trả lời trên không giải quyết được vấn đề của tôi. Cuối cùng tôi đã giải quyết nó bằng cách truy cập cụ thể vào liên kết này https://www.microsoft.com/net/download/visual-studio-sdks và tải xuống sdk cần thiết cho Visual Studio . Nó thực sự khó hiểu và tôi không hiểu tại sao nhưng điều đó đã giải quyết được vấn đề của tôi


Tôi không thể chỉ ủng hộ điều này, điều này cũng giải quyết được vấn đề của tôi nhưng tôi hy vọng ai đó làm rõ lý do đằng sau việc này.
Beytan Kurt

Giải pháp này cũng làm việc cho tôi. Đối với tôi, đó là vấn đề không tương thích với SDK mới nhất. Nếu đang sử dụng Visual Studio 2017, bạn không thể sử dụng phiên bản .NET Core SDK mới nhất.
0

11

Đối với tôi, giải pháp là thay đổi phiên bản global.jsonđể phản ánh phiên bản đã cài đặt.

Giống như những người khác đã nói phiên bản có thể được tìm thấy đang chạy dotnet --infotrong cmd

Điều này:

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

Đã trở thành:

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

Bạn cũng có thể tạo tệp global.json bằng cách chạy

dotnet new globaljson --sdk-version 2.1.4

ở gốc của dự án


2
global.jsonTệp đó sẽ được tìm thấy ở đâu nếu nó tồn tại?
Bruno Bieri,

Tôi nghĩ ms loại bỏ tập tin đó, kiểm tra sln của bạn và csproj file :)
LSP

2
Tệp global.jsonsẽ nằm bên cạnh tệp giải pháp. Tôi thường đã bao gồm một mục giải pháp trong chính giải pháp đó. Tôi nhận thấy trong các thử nghiệm của mình rằng nếu không đóng và tải lại giải pháp, việc thay đổi phiên bản trong global.jsoncó thể dẫn đến các lỗi xây dựng kỳ lạ. Nhận xét của tôi áp dụng cho VS2018, phiên bản 15.9.2, với .NET Core SDK 2.2.100.
Manfred

Từ các tài liệu .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories . Vì vậy, giống như một tệp kiểu kế thừa.
StuartLC

10

Điều này đôi khi xảy ra khi tôi đang cố gắng mở các dự án cũ của mình, điều giúp tôi là thay đổi khung mục tiêu của dự án. Đi tới Project -> projectname Properties ... và thay đổi khung Target thành khung mà bạn đã cài đặt. Thuộc tính dự án


Trình đơn thả xuống không hiển thị bất kỳ thứ gì cho tôi. Có ý kiến ​​gì không?
Danny

9

Điều này đã làm việc cho tôi

Sử dụng cài đặt Visual Studio

Trên tab "Khối lượng công việc" chọn "Phát triển đa nền tảng .Net Core" và nhấp vào "Sửa đổi"

nhập mô tả hình ảnh ở đây

Đừng quên kiểm tra "Công cụ phát triển .NET Core 2.0" trên menu bên trái.

Nguồn

Ghi chú

Tôi đã cài đặt Asp Net Core trước đây, tuy nhiên nó không xuất hiện trên Visual Studio của tôi, ngay sau khi tôi cài đặt bằng cách sử dụng cài đặt Visual Studio xuất hiện cho tôi.


1
Ngoài ra, bạn có thể cài đặt những gì bạn cần từ đây: dotnet.microsoft.com/download/…
user2173353

3

Khi tôi nâng cấp Visual Studio lên phiên bản 15.5.1, .Net Core SDK đã được nâng cấp lên 2.X, vì vậy lỗi này đã biến mất. Khi tôi chạy dotnet --info, tôi thấy như sau:

nhập mô tả hình ảnh ở đây


3

Tôi vừa gặp phải điều này với 15.8.3 sau khi gỡ cài đặt một số SDK xem trước .NET Core 1.x, ứng dụng của tôi sẽ không biên dịch và hiển thị lỗi.

Nó đã được khắc phục bằng cách cài đặt phiên bản x86 mới nhất của SDK mặc dù tôi đang sử dụng Windows 10 x64.

Tôi cho rằng điều này là do VS 2017 vẫn là một chương trình x86 và mặc dù các chương trình chạy dưới dạng x64, trình biên dịch đang tìm kiếm một SDK x86 thích hợp


3

Tôi đã cài đặt cả Visual Studio 2019 và 2017. Tôi đã thử cài đặt riêng .NET Core 2.X SDK cho VS2017 nhưng không thành công.

Vấn đề là tôi đã cài đặt .NET Core 3.0 SDK làm phiên bản sdk mặc định , mà VS2017 không thích.

Giải pháp của tôi là chuyển phiên bản SDK cho dự án cụ thể.

  • Đầu tiên, liệt kê các SDK đã cài đặt của bạn để tìm phiên bản mong muốn :
$ 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]
  • Từ thư mục giải pháp của bạn :
$ dotnet new globaljson --sdk-version 2.2.110 --force

Bây giờ, dotnetsẽ sử dụng phiên bản SDK được chỉ định cho giải pháp này.

Tôi không tìm ra cách nào để thực hiện việc này trên toàn hệ thống mà không làm xáo trộn các dự án 3.0 của mình.


Có vẻ kỳ lạ rằng điều này là cần thiết, nhưng việc nạp một global.json (cho phiên bản 2.1.513) cũng giải quyết được vấn đề của tôi.
8128

2

Trên thực tế, với tôi nó đã xảy ra theo cách ngược lại với những câu trả lời khác.

Tôi đã cài đặt .NET Core SDK mới nhất trước khi sự cố xuất hiện (3.0.0-preview2 trong trường hợp của tôi) không có phiên bản Visual Studio mới nhất (không chắc liệu điều đó có tạo ra bất kỳ sự khác biệt nào không).

Vì vậy, giải pháp chỉ là gỡ cài đặt .NET Core SDK mới nhất đó . (Điều này không hoàn hảo nếu bạn cần, vì vậy bạn có thể cân nhắc nâng cấp Visual Studio lên phiên bản mới nhất, nhưng ít nhất điều đó đã giải quyết được vấn đề đang diễn ra).


1

Tôi vừa trải qua rắc rối này. Trong trường hợp của tôi, tôi đã có một kịch bản làm việc

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

Hôm nay tôi bắt đầu nhận được lỗi chính xác này. Nhưng bây giờ tôi nhớ đã cài đặt VS2019 ngày trước. Có vẻ như nó đã thay đổi thứ gì đó cho VS2017. Tôi đã đi đến Bản cập nhật VS2017, cài đặt phiên bản / bản cập nhật mới nhất và nó đã sửa lỗi trở lại.


0

Tôi đã gặp sự cố tương tự và có phiên bản mới nhất của Microsoft Visual Studio Community 2017 Phiên bản 15.7.3

Tôi vừa tải xuống SDK 2.1 mới nhất và không còn vấn đề nhắm mục tiêu nào nữa. https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

Thông tin: Microsoft Visual Studio Community 2017 Phiên bản 15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework Phiên bản 4.7.03056

Phiên bản đã cài đặt: Cộng đồng

Công cụ C # 2.8.3-beta6-62923-07. Cam kết băm: 7aafab561e449da50712e16c9e81742b8e7a2969 Các thành phần C # được sử dụng trong IDE. Tùy thuộc vào loại dự án và cài đặt của bạn, một phiên bản khác của trình biên dịch có thể được sử dụng.

Các công cụ Azure chung 1.10 Cung cấp các dịch vụ phổ biến để Azure Mobile Services và Microsoft Azure Tools sử dụng.

NuGet Package Manager 4.6.0 NuGet Package Manager trong Visual Studio. Để biết thêm thông tin về NuGet, hãy truy cập http://docs.nuget.org/ .

ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Thông tin chi tiết

ResourcePackage Extension 1.0 ResourcePackage Visual Studio Extension Thông tin chi tiết

Công cụ Visual Basic 2.8.3-beta6-62923-07. Cam kết băm: 7aafab561e449da50712e16c9e81742b8e7a2969 Thành phần Visual Basic được sử dụng trong IDE. Tùy thuộc vào loại dự án và cài đặt của bạn, một phiên bản khác của trình biên dịch có thể được sử dụng.

Visual Studio Code Debug Adapter Host Package 1.0 Lớp Interop để lưu trữ các adapter gỡ lỗi Visual Studio Code trong Visual Studio

Công cụ Visual Studio cho Unity 3.7.0.1 Công cụ Visual Studio cho Unity


0

đảm bảo bạn tải xuống SDK x86 thay vì chỉ x64 SDK cho studio trực quan.


0

Tôi đã gặp vấn đề tương tự là .NET SDK hiện tại không hỗ trợ nhắm mục tiêu .NET Core 3.1. Nhắm mục tiêu .NET Core 1.1 trở xuống hoặc sử dụng phiên bản .NET SDK hỗ trợ .NET Core 3.1

1) Đảm bảo cài đặt .Net core SDK trên máy của bạn. Tải xuống .NET !

2) đặt các biến môi trường PATH như Đường dẫn bên dưới


0

Tôi gặp sự cố này khi cố gắng xây dựng giải pháp của mình trong TFS. Chúng tôi đã sử dụng tác vụ "dot net xuất bản". Sử dụng msbuild đã phá vỡ băng cho chúng tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.