.Net Core: การใช้คำสั่งโดยไม่ต้องเพิ่มแพ็คเกจ?

ตัวอย่างเช่นสิ่งนี้เกิดขึ้นกับฉันเมื่อฉันเพิ่มการกำหนดค่า (IConfigurationRoot) ในไฟล์ Startup.cs เพื่อให้สามารถเข้าถึงไฟล์ appsettings.json ซึ่งมีสตริงการเชื่อมต่อ

ดังนั้นครั้งแรกที่ฉันเขียน IConfigurationRoot เห็นได้ชัดว่าถูกทำเครื่องหมายว่าไม่รู้จัก ดังนั้นฉันจึงวางเมาส์ไว้เหนือมันและขยายคำแนะนำ Visual Studio จากหลอดไฟ ซึ่งได้แก่:

  • ใช้ Microsoft.Extension.Configuration:
  • Microsoft.Extension.Configuration.IConfigurationRoot
  • สร้างประเภท
  • เพิ่มแพ็คเกจ Microsoft.Extension.Configuration.Abstractions 1.1.0

ดังนั้นหากฉันเลือก "โดยใช้ Microsoft.Extensions.Configuration" คำสั่งการใช้จะถูกเพิ่มที่ด้านบนของไฟล์ของฉันและ VS รู้จัก IConfigurationRoot ทุกอย่างทำงานได้ดี แต่การตรวจสอบการอ้างอิงในโครงการของฉัน ไลบรารีนี้ไม่ได้ถูกเพิ่มเข้าไป:

ไม่มีการเพิ่มการอ้างอิง

ดังนั้นหากแทนที่จะเลือกการใช้คำสั่ง ฉันเลือก "เพิ่มแพ็คเกจ Microsoft.Extensions.Configuration.Abstractions 1.1.0" Visual Studio จะเพิ่มคำสั่งการใช้งานด้วย แต่จะเพิ่มการอ้างอิงใหม่เพิ่มเติม:

เพิ่มข้อมูลอ้างอิงแล้ว

ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงเกิดขึ้น เหตุใดการเพิ่มคำสั่งใช้ (คำแนะนำแรก) จึงทำงานได้ดี เป็นเพราะการอ้างอิงมีอยู่แล้วในไลบรารีอื่นหรือไม่ ถ้าเป็นเช่นนั้น เหตุใดฉันจึงควรเพิ่มแพ็คเกจทีละรายการ จะดีกว่าไหมถ้าเพิ่มทีละรายการ จะเกิดอะไรขึ้นถ้าฉันเพิ่ม ฉันกำลังเพิ่มการอ้างอิงไปยังไลบรารีเดียวกันสองครั้งหรือไม่

ขอบคุณล่วงหน้า.


person Alejandro Tobón    schedule 22.02.2017    source แหล่งที่มา
comment
แพ็คเกจ Microsoft.Extension.Configuration.Abstractions เป็นการพึ่งพาของแพ็คเกจ Microsoft.Extension.Configuration.Json คุณสามารถตรวจสอบภายใต้แพ็คเกจ Microsoft.Extension.Configuration.Json เพื่อดูว่ามีแพ็คเกจ Abstraction รวมอยู่ด้วยหรือไม่? เครื่องมือหลัก. NET สำหรับ VS2015 นั้นยังไม่เสร็จสิ้นสำหรับสิ่งแปลก ๆ เช่นนั้นเกิดขึ้น :)   -  person    schedule 22.02.2017


คำตอบ (1)


...เป็นเพราะข้อมูลอ้างอิงมีอยู่แล้วในไลบรารีอื่นใช่หรือไม่

ใช่ ดูภายใต้ Microsoft.Extensions.Configuration.FileExtensions หรือ Microsoft.Extensions.Configuration.Json และในที่สุดคุณก็จะได้แพ็คเกจ Abstractions

หากเป็นเช่นนั้น เหตุใดฉันจึงควรเพิ่มแพ็คเกจทีละรายการ

มันไม่จำเป็น. เครื่องมือหลอดไฟอาจไม่เร็วเท่าที่ควรกับสิ่งที่ต้องพึ่งพาแพ็คเกจทั้งหมด

การเพิ่มทีละรายการจะดีกว่าไหม

ไม่จริง แต่ถ้าคุณเคยลบแพ็คเกจพื้นฐานบางส่วนออกไป การเพิ่มทีละแพ็คเกจจาก Nuget จะช่วยให้แน่ใจว่าแพ็คเกจนั้นจะยังคงอยู่

จะเกิดอะไรขึ้นถ้าฉันทำ ฉันกำลังเพิ่มการอ้างอิงไปยังไลบรารีเดียวกันสองครั้งหรือไม่

ในทางอ้อมก็ใช่ แต่ไม่มีอันตรายอะไร มุมมองแผนผังการขึ้นต่อกันจะเจาะลึกลงไปในการขึ้นต่อกันแต่ละชั้น คุณจะเห็น "รายการที่ซ้ำกัน" มากมายหากเริ่มขยายโหนดเหล่านั้น

person travis.js    schedule 22.02.2017
comment
ขอบคุณ Travis.shepherd - person Alejandro Tobón; 22.02.2017