Cách xác định nếu .NET Core được cài đặt


302

Tôi biết rằng đối với các phiên bản .NET cũ hơn, bạn có thể xác định xem phiên bản đã cho có được cài đặt hay không bằng cách làm theo

https://support.microsoft.com/en-us/kb/318785  

Có một phương pháp chính thức để xác định nếu .NET Core được cài đặt không?

(Và tôi không có nghĩa là SDK, tôi muốn kiểm tra một máy chủ không có SDK, để xác định xem nó có DotNetCore.1.0.0-Windowshosting.exe được cài đặt trên nó không)

tôi có thể thấy

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET Cross-Platform Runtime Environment\.NET Framework 4.6\Win\v1-rc1 

với Phiên bản số 1.0.11123.0 trên máy tính Windows 7 của tôi, nhưng tôi không thấy những thứ tương tự trên máy Windows 10 của mình.


1
Câu hỏi hay. Bất cứ ai theo dõi .NET Core đều biết rằng phiên bản Runtime và SDK là một chủ đề rất khó hiểu.
Sean

@Chiramisu, Tất cả những cái được kiểm tra bên dưới đều hoạt động với tôi, nhưng vì một số chi tiết triển khai không liên quan, tôi đã sử dụng Cấu hình trạng thái mong muốn và sử dụng để đảm bảo rằng máy chủ lưu trữ máy chủ windows được cài đặt. . DSC xử lý tất cả các mớ hỗn độn liên quan đến việc kiểm tra để đảm bảo gói phù hợp được cài đặt / gỡ cài đặt.
Weloytty 23/03/18

3
dotnet --list-sdks và dotnet --list-runtimes có sẵn trên máy chủ của tôi với 2.1.300-preview1-008174 là phiên bản hoạt động
jumperdding

Chạy Lệnh dưới đây trong powershell dotnet --info Nguồn
manikanta kumar

Câu trả lời:


209

Sử dụng Powershell :

Thời gian chạy

(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'shared\Microsoft.NETCore.App')).Name

SDK:

(dir (Get-Command dotnet).Path.Replace('dotnet.exe', 'sdk')).Name

1
@MarceloFilho Bạn có phiên bản nào? Bạn có thể lấy nó bằng cách sử dụng [System.Environment]::OSVersion. Tôi đã thử nghiệm các lệnh được đề cập ở trên bằng Windows 10 Phiên bản 10.0.15063.0. Nó hoạt động tốt.
Andriy Tolstoy

6
Tôi có thể xác nhận điều này hoạt động hoàn hảo trên máy chủ Windows 2016 và windows 10.
user5389726598465

1
Không phải lệnh dotnet chỉ khả dụng khi cài đặt SDK? Điều này hoàn toàn trái ngược với những gì OP yêu cầu.
Aurimas N.

@AurimasN. Không, lệnh dotnet.exe có sẵn với cả triển khai SDK và Runtime. SDK chỉ cần thêm các lệnh CLI cần thiết và các thư viện tiên quyết, cần thiết để thực hiện "dotnet.exe build" và "dotnet.exe chạy" từ bên trong một dự án.
Jason Mock

3
Hoạt động trong PowerShell trên Windows 10 nhưng tôi thích dotnet --infođề xuất trong các câu trả lời khác.
Manfred

345

Câu hỏi tuyệt vời, và câu trả lời không phải là một câu hỏi đơn giản. Không có lệnh "hiển thị cho tôi tất cả các phiên bản lõi .net", nhưng vẫn có hy vọng.

BIÊN TẬP:

Tôi không chắc chắn khi nó được thêm vào, nhưng lệnh thông tin hiện bao gồm thông tin này trong đầu ra của nó. Nó sẽ in ra thời gian chạy và SDK đã cài đặt, cũng như một số thông tin khác:

dotnet --info

Nếu bạn chỉ muốn xem SDK: dotnet --list-sdks

Nếu bạn chỉ muốn xem thời gian chạy đã cài đặt: dotnet --list-runtimes

Tôi đang dùng Windows, nhưng tôi đoán nó cũng sẽ hoạt động trên Mac hoặc Linux với phiên bản hiện tại.

Ngoài ra, bạn có thể tham khảo Lưu trữ Tải xuống .NET Core để giúp bạn giải mã các phiên bản SDK.


THÔNG TIN SAU: Mọi thứ bên dưới điểm này là thông tin cũ, ít liên quan hơn, nhưng vẫn có thể hữu ích.

Xem Runtimes đã cài đặt :

Mở C:\Program Files\dotnet\shared\Microsoft.NETCore.Apptrong Windows Explorer

Xem SDK đã cài đặt :

Mở C:\Program Files\dotnet\sdktrong Windows Explorer

(Nguồn cho các vị trí: Blog của nhà phát triển )


Ngoài ra, bạn có thể xem các phiên bản Runtime và SDK mới nhất được cài đặt bằng cách phát hành các lệnh này tại dấu nhắc lệnh:

dotnet Phiên bản Runtime mới nhất là điều đầu tiên được liệt kê. TUYÊN BỐ TỪ CHỐI: Điều này không còn hoạt động, nhưng có thể hoạt động cho các phiên bản cũ hơn.

dotnet --version Phiên bản SDK mới nhất TUYÊN BỐ TỪ CHỐI: Rõ ràng kết quả của việc này có thể bị ảnh hưởng bởi bất kỳ tệp cấu hình global.json nào.


Trên macOS, bạn có thể kiểm tra phiên bản lõi .net bằng cách sử dụng lệnh bên dưới.

ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/

Trên Ubuntu hoặc Alps:

ls /usr/share/dotnet/shared/Microsoft.NETCore.App/

Nó sẽ liệt kê thư mục với tên phiên bản đã cài đặt.


15
Trên macOS:ls /usr/local/share/dotnet/shared/Microsoft.NETCore.App/
Sergii Volchkov

Trong trường hợp của tôi, dotnet --version cho biết 1.1.0, nhưng các phiên bản đã cài đặt bao gồm 1.1.2. Chỉ để kiểm tra, tôi đổi tên dotnet.exe và dotnet --version không tìm thấy phiên bản nào. Sau đó tôi đã cài đặt lại 1.1.2 và dotnet --version một lần nữa cho biết tôi có 1.1.0.
William Jockusch

1
@SergiiVolchkov cảm ơn vì đã bình luận. Bạn có thể vui lòng cho tôi biết cách gỡ cài đặt dotnet core1.0.0 khỏi mac không?
Pankaj Parkar

1
.NET Core 2.1.0 thêm "dotnet --list-runtimes" và "dotnet --list-sdks"
b8adamson

1
dotnet --versionliệt kê SDK đang sử dụng, đây là bản mới nhất theo mặc định, nhưng không phải lúc nào cũng đúng. Nếu bạn có tệp global.json trong cấu trúc thư mục của mình, nó sẽ hiển thị bất kỳ phiên bản nào được đặt trong global.json, không phải là phiên bản mới nhất.
Maíra Wenzel - MSFT

164

Câu trả lời đúng cho các môi trường chỉ có thời gian chạy mà không có SDK, chẳng hạn như máy chủ có gói Windows Hosting được cài đặt, là chạy PowerShell với lệnh sau:

dotnet --info

Theo tài liệu chính thức :

  • Các --versiontùy chọn "In ra các phiên bản của .NET Lõi SDK sử dụng." và do đó không hoạt động nếu SDK không được cài đặt. Trong khi...
  • Các --infotùy chọn "In ra thông tin chi tiết về các công cụ CLI và môi trường, chẳng hạn như các hệ điều hành hiện nay, cam kết SHA cho phiên bản, và các thông tin khác."

Đây là một bài viết chính thức giải thích cách hoạt động của phiên bản .NET Core . :)


9
Điều đáng kinh ngạc là đây là câu trả lời thực tế. Và nó bị chôn vùi bên dưới một đống câu trả lời từ những người thậm chí không buồn đọc chính xác câu hỏi.
Jammer

--infokhông hoạt động trên máy chủ của tôi, trong khi đó --versionkhông hoạt động. Tùy chọn thông tin mang lại cho tôi:Did you mean to run dotnet SDK commands? Please install dotnet SDK from: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
ArieKanarie

@ArieKanarie Bạn có thể cần sửa chữa bằng Công cụ sửa chữa Microsoft .NET Framework .
Chiramisu

106

Bạn có thể kiểm tra xem dotnet.exe có sẵn không:

where dotnet

Sau đó, bạn có thể kiểm tra phiên bản:

dotnet --version

CẬP NHẬT: Bây giờ có một cách tốt hơn để làm điều này, được giải thích tốt trong nhiều câu trả lời khác:

dotnet --info


34
Nó vượt trội so với phiên bản CLI dotnet, không phải thời gian chạy .. Đó là hai điều khác nhau. Đã cài đặt CLI, không có nghĩa là thời gian chạy được cài đặt và nếu đó là cùng một phiên bản.
Aleksanderis

sshed đến một máy chủ chỉ cài đặt thời gian chạy để xác nhận, nó không hoạt động. Xem câu trả lời này thay thế .
gldraphael

49

Một trong những cách để xác định xem .NET Corecó được cài đặt trên Windows hay không là:

  • Nhấn Windows+R
  • Kiểu cmd
  • Trên dấu nhắc lệnh, gõ dotnet --version

đảo ngược dotnet

Nếu .NET Coređược cài đặt, chúng tôi sẽ không nhận được bất kỳ lỗi nào trong các bước trên.


6
Xem bình luận ở trên để có cùng một câu trả lời: Nó vượt trội so với phiên bản CLI dotnet, không phải thời gian chạy .. Đó là hai điều khác nhau. Đã cài đặt CLI, không có nghĩa là thời gian chạy được cài đặt và nếu đó là phiên bản tương tự
Michael Freidgeim

Nitpcking, nhưng bạn không thể có CLI hoạt động mà không cần cài đặt thời gian chạy. Vì vậy, nếu bạn có CLI, bạn sẽ có một số thời gian chạy, chỉ có thể đó là một phiên bản hoàn toàn khác.
omajid

@omajid Không chắc bạn đang nói về CLI. CLI mà tôi đang đề cập trong câu trả lời của tôi là dấu nhắc lệnh mặc định CLI trên Windows 10 x64 được cài đặt / có sẵn mà không cần cài đặt đặc biệt
Mohammed Zameer

Đây không phải là câu trả lời cho câu hỏi.
Jammer

@Jammer Tôi đề nghị bạn cung cấp một đề xuất chỉnh sửa
Mohammed Zameer

20

(1) Nếu bạn đang ở trên hệ thống Window.

Mở dấu nhắc lệnh.

 dotnet --version

(2) Chạy lệnh dưới đây Nếu bạn đang sử dụng hệ thống Linux.

dotnet --version

dotnet --info

type dotnet --version- Không hoạt động trên windows 10. dotnet --versionmặc dù hoạt động. Bạn chắc chắn về câu trả lời của bạn hoặc đó typelà một lỗi đánh máy? Cả hai lệnh linux đều hoạt động trên Win 10 đối với tôi.
Aditya

@Aditya đồng ý nghĩ rằng đó typelà một hướng dẫn cho người đọc chứ không phải là một phần của lệnh. Tôi đã chỉnh sửa bài viết cho phù hợp.
JohnLBevan

Vâng, đó là một hướng dẫn.
Hiren Parghi

15

Tôi làm việc chủ yếu với các máy chủ và máy chủ phát triển Windows.

Tôi chỉ muốn chỉ ra (ít nhất là cho NET.Core 2.0 trở lên), điều duy nhất cần thiết là thực thi dotnet --infotrong một dấu nhắc lệnh để lấy thông tin về phiên bản mới nhất được cài đặt. Nếu .NET Core được cài đặt, bạn sẽ nhận được một số phản hồi.

Trên máy phát triển của tôi (Windows 10), kết quả như sau. SDK là 2.1.2 và thời gian chạy là 2.0.3.

.NET Command Line Tools (2.1.2)

Product Information:
 Version:            2.1.2
 Commit SHA-1 hash:  5695315371

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

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.3
  Build    : a9190d4a75f4a982ae4b4fa8d1a24526566c69df

Trên một trong những máy chủ của tôi chạy Windows Server 2016 với gói Windows Server Hosting (không có SDK) như sau. Không có SDK, thời gian chạy là 2.0.3.

Microsoft .NET Core Shared Framework Host

Version  : 2.0.3
Build    : a9190d4a75f4a982ae4b4fa8d1a24526566c69df

Chúc mừng!


10

Các lệnh sau khả dụng với .NET Core SDK 2.1 (v2.1.300) :

Để liệt kê tất cả các SDK .NET Core đã cài đặt, hãy sử dụng: dotnet --list-sdks

Để liệt kê tất cả các thời gian chạy .NET Core đã cài đặt, hãy sử dụng dotnet --list-runtimes

(đã thử nghiệm trên Windows khi viết, 03 tháng 6 năm 2018 và một lần nữa vào ngày 23 tháng 8 năm 2018)

Cập nhật kể từ ngày 24 tháng 10 năm 2018: Tùy chọn tốt hơn có thể hiện có dotnet --infotrong một thiết bị đầu cuối hoặc cửa sổ PowerShell như đã được đề cập trong các câu trả lời khác.


Tất cả chúng ta đều có thể học. Tò mò muốn biết lý do của downvote. Có lẽ để lại một bình luận khi bạn downvote?
Manfred

Tôi đã không downvote, nhưng tôi suy đoán có thể là do bạn đã đề cập đến các lệnh "có sẵn với .NET Core SDK", trong khi câu hỏi "Tôi muốn kiểm tra một máy chủ không có SDK". Câu trả lời của bạn sẽ được cải thiện nếu bạn xác định lệnh nào ở trên hoạt động khi chỉ cài đặt thời gian chạy .
ToolmakerSteve

@ToolmakerSteve Vâng, đó có thể là vấn đề. Mặc dù vậy, tôi không có môi trường mà không có SDK và sẽ không muốn đi đến độ dài đó để xóa nó .... Mặc dù vậy, cảm ơn vì nhận xét của bạn. Rất nhiều đánh giá cao.
Manfred

5

Trên cửa sổ, bạn chỉ cần mở dấu nhắc lệnh và gõ:

dotnet --version

Nếu khung lõi .net được cài đặt, bạn sẽ có phiên bản cài đặt hiện tại

xem ảnh chụp màn hình:

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


3
Điều này cung cấp cho bạn phiên bản SDK, không phải phiên bản thời gian chạy
Silkfire

1

Ngoài ra, bạn chỉ có thể nhìn vào bên trong

C: \ Tệp chương trình \ dotnet \ sdk


0

Nhìn vào C:\Program Files\dotnet\shared\Microsoft.NETCore.Appđể xem phiên bản nào của thời gian chạy có thư mục ở đó. Nguồn.

Rất nhiều câu trả lời ở đây nhầm lẫn SDK với Runtime, khác nhau.


0

Sau tất cả các câu trả lời khác, điều này có thể hữu ích.

Mở ứng dụng của bạn trong Visual Studio. Trong Giải pháp Explorer, nhấp chuột phải vào dự án của bạn. Nhấp vào Thuộc tính. Bấm vào Ứng dụng. Trong "Khung mục tiêu", nhấp vào nút thả xuống và bạn đang ở đó, tất cả các khung đã cài đặt.

BTW - bây giờ bạn có thể chọn khuôn khổ nào bạn muốn.


Tôi đã sử dụng Visual Studio 2017. YMMV.
Baruch Atta

-6

Nó không cần một quá trình cài đặt.

Tôi đã ghim "VSCore" trên thanh tác vụ của mình (win10), vì vậy hãy mở nó và mở trình quản lý tác vụ chọn "Visual Studio Core" mở rộng mũi tên trái và qua bất kỳ nút nào trong số chúng xử lý nút phải qua nó và nhấp vào "Mở vị trí tệp " thực đơn.

Nếu bạn không nhớ nơi cài đặt tệp "Code.exe" trong tất cả các ổ đĩa cứng của bạn.


1
Câu hỏi là về .NET CORE không phải là ide VS CODE.
dùng5389726598465
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.