มีซอร์สโค้ด. NET จำนวนมากพร้อมใช้งานและส่วนใหญ่เป็นโอเพ่นซอร์สแม้ว่าจะอยู่ภายใต้ไลเซนส์ต่างๆ ยังมีรหัสอื่นให้ใช้ แต่มีวัตถุประสงค์เพื่อการอ้างอิงเท่านั้นและไม่สามารถใช้ในรหัสของคุณได้
ระบุว่าเป้าหมายที่ระบุไว้คือ:
ฉันต้องการเพิ่มขีด จำกัด นั้นสำหรับแอปพลิเคชันที่มีอยู่ที่ซับซ้อนซึ่งผูกพันกับขีด จำกัด นี้ ฉันไม่ต้องการเปลี่ยนอินเทอร์เฟซของประเภท ฉันไม่มั่นใจว่าฉันสามารถดึงการเปลี่ยนอินเทอร์เฟซของประเภทนั้นได้โดยไม่ต้องแนะนำข้อบกพร่องเล็กน้อยให้กับโค้ดทั้งหมดที่จะต้องเปลี่ยนตามผล
หากเจตนาคือการปรับปรุงประเภทลำดับชั้นปัจจุบันว่ารหัสนั้นเป็นโอเพ่นซอร์สนั้นไม่เกี่ยวข้องหรือไม่เพราะถึงแม้ว่าคุณจะไม่สามารถแนะนำการเปลี่ยนแปลงใด ๆ ในระบบโดยรวม: แม้ว่าคุณจะสามารถแทนที่การชุมนุมใน SQL Server, คุณจะไม่สามารถเซ็นชื่อด้วย Certificate / Private Key เดียวกันและด้วยเหตุนี้ระบบจะไม่ถูกใช้งาน
อย่างไรก็ตามคุณสามารถสร้าง SQLCLR User-Defined Type (UDT) ของคุณเองเพื่อมอบการทำงานที่ต้องการ
ยังคงเป็นมันเกี่ยวข้องกับการได้รับความเข้าใจที่ดีขึ้นของ. NET Framework:
คุณสามารถดูซอร์สโค้ดของเนื้อหาส่วนใหญ่ได้ที่นี่: https://github.com/Microsoft/referencesource
และสิ่งอื่น ๆ อีกมากมายที่นี่: https://github.com/dotnet/corefx
ที่เก็บข้อมูลทั้งสองที่ระบุไว้ข้างต้นเป็นโอเพ่นซอร์สและควบคุมโดยส่วนใหญ่อยู่ภายใต้ใบอนุญาต MIT แม้ว่าคุณจะต้องตรวจสอบข้อมูลสิทธิ์การใช้งานในแต่ละตำแหน่งและบางครั้งในโฟลเดอร์ต่างๆ
รหัสที่เหลือจำนวนมากสามารถพบได้ที่นี่: http://referencesource.microsoft.com/
รหัสที่อ้างอิงที่ ReferenceSource.Microsoft.com (ลิงค์ด้านบนโดยตรง) ที่ไม่พบในสองลิงค์แรก (ซึ่งเป็น Open Source) ไม่ใช่ Open Source และถูกควบคุมโดยMICROSOFT REFERENCE SOURCE LICENSE (MS-RSL)ส่วนที่เกี่ยวข้องเป็น (แก้ไขเบา ๆ เพื่อใส่คำจำกัดความของ "การใช้การอ้างอิง" เพียงทำตามการใช้วลีนั้น):
ผู้อนุญาตให้สิทธิ์การใช้งานลิขสิทธิ์ที่ไม่สามารถถ่ายโอนไม่ผูกขาดและไม่ผูกขาดทั่วโลกในการทำซ้ำซอฟต์แวร์สำหรับการอ้างอิง: การใช้ซอฟต์แวร์ภายใน บริษัท ของคุณเป็นการอ้างอิงในรูปแบบอ่านอย่างเดียวเพื่อจุดประสงค์ในการดีบักเพียงอย่างเดียว ผลิตภัณฑ์ของคุณการบำรุงรักษาผลิตภัณฑ์ของคุณหรือเพิ่มความสามารถในการทำงานร่วมกันของผลิตภัณฑ์ของคุณด้วยซอฟต์แวร์และไม่รวมถึงสิทธิ์ในการเผยแพร่ซอฟต์แวร์ภายนอก บริษัท ของคุณ
อย่างไรก็ตามปรากฏว่าMicrosoft.SqlServer.*
เนมสเปซไม่สามารถใช้ได้ในสถานที่เหล่านั้น ซึ่งหมายความว่าคำตอบง่ายๆสำหรับคำถามของ: "คือ HierarchyID โอเพ่นซอร์ส" คือไม่มี
หากความต้องการคือการดูรหัสที่มาแล้วคุณจะต้องเปิด DLL - Microsoft.SqlServer.Types.dll - ด้วย decompiler แต่มีประเด็นทางกฎหมายและ / หรือจริยธรรมที่อาจเกิดขึ้นในการจัดการกับ นี่คือรหัสที่เป็นกรรมสิทธิ์ดังนั้นจึงมีสองประเด็นหลักที่ควรพิจารณา:
ตามที่ระบุไว้ใน SQL Server ข้อตกลงใบอนุญาตผู้ใช้ปลายทาง (EULA) (และที่ยกมาใน @ TomV ของคำตอบ ) คุณสามารถเท่านั้น " วิศวกรรมย้อนกลับหรือแยกชิ้นส่วน " รหัสที่ไม่ให้ " เพียงในขอบเขตที่กฎหมายที่ใช้บังคับชัดอนุญาต " . หมายความว่าสำหรับบางคนมันถูกต้องตามกฎหมายที่จะทำสิ่งนี้ แต่สำหรับคนอื่นไม่มากนัก ดังนั้นคุณอาจต้องการปรึกษาทนายความด้านทรัพย์สินทางปัญญาในพื้นที่
ถ้ามันถูกกฎหมายสำหรับคุณในการถอดรหัสความตั้งใจของภาษาทางกฎหมายรวมถึงความจริงที่ว่ามีการให้ซอร์สโค้ดบางตัว (ตามที่เชื่อมโยงที่ด้านบน) แต่โค้ดเฉพาะนี้ไม่ได้แสดงถึงความปรารถนาที่มีต่อประชาชนทั่วไป ไม่เห็นหรือมีรหัสนี้ ดังนั้นการถูกกฏหมายในการถอดรหัสนั้นไม่ควรถูกนำมาใช้เพราะมันถูกกฎหมายในการทำสำเนา แต่ก็มีมากขึ้นเพื่อที่จะสามารถใช้เป็นข้อมูลอ้างอิงได้ (เช่นสำหรับการดีบักเป็นต้น)