Tại sao phải tạo một dự án Thư viện lớp ASP.NET 5?


98

Tôi đang cố gắng tìm ra dự án C # "ASP.NET 5 Class Library" (vNext) có liên quan gì với ASP.NET. Tại sao phải tạo một dự án với mẫu này thay vì chỉ một dự án C # "Thư viện lớp" thông thường?

Tôi thích các tính năng mới, chẳng hạn như tệp project.json hơn là tệp .csproj, v.v., nhưng có vẻ không đúng khi tạo thư viện lớp "ASP.NET" khi dự án không liên quan gì đến ASP.NET hoặc IIS, v.v. . Nó chỉ là một dự án cho lớp logic nghiệp vụ. Một trang web WebApi ASP.NET mới cuối cùng sẽ tham chiếu đến dự án này, nhưng điều đó không liên quan vào thời điểm này.

Có phải nó chỉ được đặt tên xấu? Nó có nên được gọi là "vNext Class Library" và không sử dụng một biểu tượng trông giống như một ứng dụng web không?


Có ước tính về thời điểm họ nghĩ rằng có thể thêm một dự án hiện có thuộc loại Thư viện lớp cũ tốt không? Đây là suy nghĩ cuối cùng mà tôi mong đợi để chuyển MVC 5 của mình sang ASP.NET 5 MVC 6.
radbyx

"ASP.NET 5 Class Library" có khuôn khổ khác với ASP .NET Core, nhưng cốt lõi có Thư viện lớp Core riêng , hãy sử dụng nó để thay thế.
Jaider

Câu trả lời:


100

Tại sao phải tạo một dự án Thư viện lớp ASP.NET 5?

Có một số lợi ích của các dự án Thư viện Lớp ASP.NET 5 ( .kproj) so với các dự án Thư viện Lớp ( .csproj ):

  1. Thư viện ASP.NET 5 lớp dễ dàng hỗ trợ các dự án cross-biên dịch để nhiều mục tiêu, chẳng hạn như aspnet50, aspnetcore50, net45, và các biến thể khác nhau thư viện lớp cầm tay. Điều này bao gồm hỗ trợ Visual Studio phong phú cho Intellisense để thông báo cho bạn biết API nào có sẵn cho các mục tiêu nào.
  2. Các gói NuGet được tạo tự động, đây là một điều cực kỳ phổ biến đối với các thư viện lớp.
  3. Năng suất tốt hơn khi nói đến những thứ như tự động làm mới Solution Explorer khi hệ thống tệp thay đổi. Ít xung đột hơn trong kiểm soát nguồn khi cố gắng hợp nhất các thay đổi xung đột trong tệp * .csproj.
  4. Có thể được biên dịch đa nền tảng (một phần vì nó không phụ thuộc vào MSBuild)

Bạn có thể tham chiếu dự án * .csproj từ dự án * .kproj (điều này vừa được thực hiện dễ dàng hơn rất nhiều với bản xem trước mới của Visual Studio 2015), nhưng luôn có thể thực hiện được với một số bước thủ công.

Tại sao tên có "ASP.NET" trong đó?

Theo như tên gọi, nó là một di tích lịch sử sẽ sớm được giải quyết. Loại dự án mới hữu ích vượt xa các ứng dụng ASP.NET 5. Mong đợi để xem các tên mới trong bản xem trước trong tương lai của Visual Studio:

  • Ứng dụng .NET Console (Đa nền tảng)
  • Thư viện lớp .NET (Đa nền tảng)

Cập nhật 13/5/2015

Với việc phát hành Visual Studio 2015 RC, bạn có thể thấy tên mẫu dự án được cập nhật:

  • Thư viện lớp học (Gói)
  • Ứng dụng Bảng điều khiển (Gói)

Chúng sử dụng project.jsontệp và Môi trường thực thi .NET (DNX) để xây dựng, chạy và đóng gói (thành gói NuGet) dự án.

Các mẫu dự án này tiếp tục hiển thị trong hộp thoại Dự án mới bên dưới nút "Web", nhưng bây giờ cũng hiển thị trong nút "Visual C #" chính.

VS2015 RC Class Lib / Console Mẫu ứng dụng


bạn có thể mở rộng trên # 2 không - ý bạn là intellisense đề xuất một API và sau đó tải xuống gói nuget cho bạn? Tôi gõ JQuery và nó sẽ đưa cho tôi?
Simon_Weaver

3
@Simon_Weaver Ý tôi là trong khi dự án Thư viện lớp thông thường chỉ tạo ra một DLL và PDB, thì dự án mới tạo ra một NUPKG (gói NuGet) có thể được tải lên nuget.org.
Eilon,

2
.kproj kể từ đó đã được đổi tên thành .xproj
Boris Lipschitz

10

Đây là một quan sát thú vị, mẫu hiện tại sẽ tạo ra một thư viện lớp tương thích với thời gian chạy ASP.NET 5. Bạn không nhận được điều đó từ thư viện lớp C # bình thường.

Tôi đã gửi vấn đề sau để theo dõi câu hỏi thiết kế này - https://github.com/aspnet/Home/issues/281


Tôi sẽ xem vấn đề của bạn, cảm ơn. Rõ ràng là vấn đề đặt tên tương tự với "Ứng dụng bảng điều khiển ASP.NET 5". Có thể nên được gọi là "Ứng dụng bảng điều khiển vNext", nếu không các nhà phát triển có thể nhầm lẫn nó với một số loại ứng dụng bảng điều khiển với trang web ASP.NET. Có lẽ vị trí của mẫu nên được chuyển từ "Visual C # -> Web" thành "Visual C # -> vNext"
mkaj

Sự cố github đã bị đóng. Tên dự án tốt hơn - nhờ: github.com/aspnet/Home/issues/281
mkaj

3

Từ những gì tôi hiểu, một lợi ích là sản phẩm cuối cùng của dự án Thư viện lớp ASP.NET 5 là một gói NuGet (thay vì chỉ là hợp ngữ .dll).

Bạn có thể tạo gói NuGet bằng cách nhấp chuột phải vào dự án trong Visual Studio 2015 và chọn tùy chọn "Xuất bản ...". Hoặc bạn có thể sử dụng "KPM pack" tại dòng lệnh.

Ngoài ra, bạn có khả năng sử dụng thời gian chạy ASP.NET 5 Core để thư viện của bạn có thể chạy đa nền tảng.


Nó có tên xấu không? Không liên quan gì đến ASP.NET?
mkaj

1
Một trong những mục tiêu chính của ASP.NET 5 là cho phép nó chạy trên nhiều nền tảng. Một số đã hỏi "có nên gọi cái này là .NET Core không?" Ít nhất hiện tại, cách tiếp cận đa nền tảng của Microsoft chỉ dành cho web (và các ứng dụng bảng điều khiển) và không hỗ trợ phát triển máy tính để bàn như Java. Để nhấn mạnh đó là về trang web, họ đang xây dựng thương hiệu cho tất cả dưới tên "ASP.NET 5". Nếu bạn muốn tạo một thư viện chạy đa nền tảng, nó phải là Thư viện lớp ASP.NET 5.
Thomas Kadlec

Nó có nghĩa là tôi có thể nói với sếp của 'yes' khi ông hỏi 'là ASP.NET công nghệ tốt nhất' - đó là lý do tại sao
Simon_Weaver
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.