ทำไมต้องสร้างโปรเจ็กต์ ASP.NET 5 Class Library


98

ฉันกำลังพยายามหาว่า "ASP.NET 5 Class Library" (vNext) C # โปรเจ็กต์เกี่ยวข้องกับ ASP.NET อย่างไร เหตุใดจึงต้องสร้างโปรเจ็กต์ด้วยเทมเพลตนี้แทนที่จะสร้างโปรเจ็กต์ C # "Class Library" แบบปกติ

ฉันชอบคุณสมบัติใหม่เช่นไฟล์ project.json มากกว่าไฟล์. csproj เป็นต้น แต่ดูเหมือนจะไม่ถูกต้องที่จะสร้างไลบรารีคลาส "ASP.NET" เมื่อโปรเจ็กต์ไม่มีส่วนเกี่ยวข้องกับ ASP.NET หรือ IIS เป็นต้น . เป็นเพียงโครงการสำหรับชั้นตรรกะทางธุรกิจ ในที่สุดเว็บไซต์ WebApi ASP.NET ใหม่จะอ้างอิงโครงการนี้ แต่ไม่เกี่ยวข้องในตอนนี้

แค่ชื่อไม่ดี? ควรเรียกว่า "vNext Class Library" และไม่ใช้ไอคอนที่ดูเหมือนเว็บแอปหรือไม่


มีการประมาณว่าเมื่อใดที่พวกเขาคิดว่าเป็นไปได้ที่จะเพิ่มโครงการที่มีอยู่ในประเภทไลบรารีคลาสเก่าที่ดี นี่เป็นความคิดสุดท้ายที่ฉันคาดว่าจะดึงการโยกย้าย MVC 5 ไปเป็น ASP.NET 5 MVC 6
radbyx

"ASP.NET 5 Class Library" มีกรอบงานที่แตกต่างจาก ASP .NET Core แต่ core มีCore Class Libraryของตัวเองให้ใช้สิ่งนั้นแทน
Jaider

คำตอบ:


100

ทำไมต้องสร้างโปรเจ็กต์ ASP.NET 5 Class Library

มีประโยชน์หลายประการของโครงการ ASP.NET 5 Class Library ( .kproj) เหนือโครงการ Class Library ( .csproj):

  1. ห้องสมุด ASP.NET 5 ชั้นได้อย่างง่ายดายสนับสนุนโครงการข้ามรวบรวมไปยังเป้าหมายหลายอย่างเช่นaspnet50, aspnetcore50, net45และอื่น ๆ รูปแบบห้องสมุดชั้นพกพาต่างๆ ซึ่งรวมถึงการสนับสนุน Visual Studio ที่สมบูรณ์สำหรับ Intellisense เพื่อแจ้งให้คุณทราบว่า API ใดที่พร้อมใช้งานสำหรับเป้าหมายใด
  2. แพ็กเกจ NuGet จะถูกสร้างขึ้นโดยอัตโนมัติซึ่งเป็นสิ่งที่พบเห็นได้ทั่วไปในไลบรารีคลาส
  3. ประสิทธิภาพการทำงานที่ดีขึ้นเมื่อพูดถึงสิ่งต่างๆเช่นการรีเฟรช Solution Explorer โดยอัตโนมัติเมื่อระบบไฟล์เปลี่ยนไป ความขัดแย้งน้อยลงในการควบคุมแหล่งที่มาเมื่อพยายามผสานการเปลี่ยนแปลงที่ขัดแย้งกันในไฟล์ * .csproj
  4. สามารถคอมไพล์ข้ามแพลตฟอร์มได้ (ส่วนหนึ่งเป็นเพราะไม่ขึ้นอยู่กับ MSBuild)

คุณสามารถอ้างอิงโปรเจ็กต์ * .csproj จากโปรเจ็กต์ * .kproj (สิ่งนี้ทำได้ง่ายขึ้นมากด้วยการแสดงตัวอย่างใหม่ของ Visual Studio 2015) แต่ก็สามารถทำได้เสมอเมื่อใช้ขั้นตอนด้วยตนเอง

ทำไมชื่อจึงมี "ASP.NET" อยู่?

เท่าที่ชื่อไปมันเป็นของที่ระลึกแห่งประวัติศาสตร์ที่จะได้รับการกล่าวถึงในไม่ช้า ประเภทโครงการใหม่มีประโยชน์มากกว่าแอปพลิเคชัน ASP.NET 5 คาดว่าจะเห็นชื่อใหม่ในตัวอย่าง Visual Studio ในอนาคต:

  • แอปพลิเคชันคอนโซล. NET (ข้ามแพลตฟอร์ม)
  • .NET Class Library (ข้ามแพลตฟอร์ม)

ปรับปรุง 5/13/2558

ด้วยการเปิดตัวVisual Studio 2015 RCคุณสามารถดูชื่อเทมเพลตโครงการที่อัปเดต:

  • ห้องสมุดคลาส (แพ็คเกจ)
  • แอปพลิเคชันคอนโซล (แพ็คเกจ)

สิ่งเหล่านี้ใช้project.jsonไฟล์และ. NET Execution Environment (DNX) เพื่อสร้างรันและแพ็กเกจ (ลงในแพ็คเกจ NuGet) โครงการ

เทมเพลตโครงการเหล่านี้ยังคงแสดงในกล่องโต้ตอบโครงการใหม่ภายใต้โหนด "เว็บ" แต่ตอนนี้ยังแสดงในโหนด "Visual C #" หลักด้วย

เทมเพลตแอป VS2015 RC Class Lib / Console


คุณสามารถขยายใน # 2 ได้ไหม - คุณหมายถึง intellisense แนะนำ API แล้วดาวน์โหลดแพ็คเกจ nuget ให้คุณหรือไม่? ฉันพิมพ์ JQuery แล้วมันจะให้ฉัน?
Simon_Weaver

3
@Simon_Weaver ฉันหมายความว่าในขณะที่โครงการ Class Library ทั่วไปสร้างเพียง DLL และ PDB โครงการใหม่จะสร้าง NUPKG (แพ็คเกจ NuGet) ที่สามารถอัปโหลดไปยัง nuget.org
Eilon

2
.kproj ตั้งแต่นั้นมาถูกเปลี่ยนชื่อเป็น. xproj
Boris Lipschitz

10

นี่เป็นข้อสังเกตที่น่าสนใจเทมเพลตปัจจุบันจะสร้างไลบรารีคลาสที่เข้ากันได้กับรันไทม์ ASP.NET 5 คุณไม่ได้รับสิ่งนั้นจากไลบรารีคลาส C # ปกติ

ฉันยื่นเรื่องต่อไปนี้เพื่อติดตามคำถามเกี่ยวกับการออกแบบนี้ - https://github.com/aspnet/Home/issues/281


ฉันจะคอยดูปัญหาของคุณขอบคุณ ปัญหาการตั้งชื่อเดียวกันกับ "ASP.NET 5 Console Application" อย่างชัดเจน บางทีควรเรียกว่า "vNext Console Application" มิฉะนั้น devs อาจสับสนกับแอปคอนโซลบางประเภทในเว็บไซต์ ASP.NET บางทีตำแหน่งของเทมเพลตควรย้ายจาก "Visual C # -> Web" ไปที่ "Visual C # -> vNext"
mkaj

ปิดปัญหา github แล้ว ชื่อโครงการที่ดีขึ้น - ขอบคุณ: github.com/aspnet/Home/issues/281
mkaj

3

จากสิ่งที่ฉันเข้าใจประโยชน์อย่างหนึ่งก็คือผลิตภัณฑ์สุดท้ายของโครงการ ASP.NET 5 Class Library เป็นแพ็คเกจ NuGet (ไม่ใช่แค่การประกอบ. dll)

คุณสามารถสร้างแพ็คเกจ NuGet ได้โดยคลิกขวาที่โปรเจ็กต์ใน Visual Studio 2015 แล้วเลือกตัวเลือก "เผยแพร่ ... " หรือคุณสามารถใช้ "KPM pack" ที่บรรทัดคำสั่ง

นอกจากนี้คุณยังมีความสามารถในการใช้รันไทม์ ASP.NET 5 Core เพื่อให้ไลบรารีของคุณสามารถรันข้ามแพลตฟอร์มได้


เสียชื่อหรือเปล่า ไม่มีอะไรเกี่ยวข้องกับ ASP.NET?
mkaj

1
หนึ่งในเป้าหมายหลักของ ASP.NET 5 คือการอนุญาตให้ทำงานข้ามแพลตฟอร์ม มีบางคนถามว่า "ไม่ควรเรียกว่า. NET Core แทนหรือ?" อย่างน้อยสำหรับตอนนี้แนวทางหลายแพลตฟอร์มของ Microsoft เป็นเพียงเกี่ยวกับเว็บ (และแอปคอนโซล) และไม่สนับสนุนการพัฒนาเดสก์ท็อปเช่น Java เพื่อเน้นย้ำว่ามันเกี่ยวกับเว็บพวกเขาสร้างแบรนด์ทั้งหมดภายใต้ชื่อ "ASP.NET 5" หากคุณต้องการสร้างไลบรารีที่รันข้ามแพลตฟอร์มควรเป็นไลบรารีคลาส ASP.NET 5
Thomas Kadlec

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