Ein Großteil des .NET-Quellcodes ist verfügbar, und ein Großteil davon ist Open Source, allerdings unter verschiedenen Lizenzen. Noch anderer Code ist verfügbar, jedoch nur zu Referenzzwecken und kann nicht in Ihrem Code verwendet werden.
Vorausgesetzt, das erklärte Ziel ist:
Ich möchte dieses Limit für eine komplexe vorhandene Anwendung erhöhen, die dieses Limit erreichen muss. Ich möchte die Schnittstelle des Typs nicht ändern. Ich bin nicht sicher, ob ich es schaffen könnte, die Benutzeroberfläche des Typs zu ändern, ohne subtile Fehler in den gesamten Code einzufügen, der als Ergebnis geändert werden müsste.
Wenn der aktuelle Hierarchietyp aktualisiert werden soll, spielt es keine Rolle, ob der Code Open Source ist oder nicht, denn selbst wenn dies der Fall ist, könnten Sie niemals Änderungen im Gesamtsystem vornehmen: Selbst wenn Sie die Assembly in ersetzen könnten SQL Server, Sie könnten es nicht mit demselben Zertifikat / privaten Schlüssel signieren und daher würde es vom System nicht verwendet.
Sie können jedoch Ihren eigenen benutzerdefinierten SQLCLR-Typ (UDT) erstellen, um die gewünschte Funktionalität bereitzustellen.
In Bezug auf ein besseres Verständnis von .NET Framework:
Sie können den Quellcode der meisten Inhalte hier anzeigen: https://github.com/Microsoft/referencesource
und noch mehr hier: https://github.com/dotnet/corefx
Beide oben genannten Repositorys sind Open Source und unterliegen größtenteils der MIT-Lizenz. Sie müssen jedoch die Lizenzinformationen an jedem Speicherort und manchmal in verschiedenen Ordnern überprüfen, um sicherzugehen.
Ein Großteil des verbleibenden Codes finden Sie hier: http://referencesource.microsoft.com/
Der unter ReferenceSource.Microsoft.com gefundene Code (der Link direkt oben), der nicht auch unter den ersten beiden Links (Open Source) zu finden ist, ist nicht Open Source und unterliegt stattdessen der MICROSOFT REFERENCE SOURCE LICENSE (MS-RSL). , wobei der relevante Teil (leicht bearbeitet, um die Definition von "Referenzgebrauch" unmittelbar nach der Verwendung dieses Ausdrucks zu setzen):
Der Lizenzgeber gewährt Ihnen eine nicht übertragbare, nicht exklusive, weltweite, lizenzgebührenfreie Copyright-Lizenz zur Reproduktion der Software zur Verwendung als Referenz: Verwendung der Software in Ihrem Unternehmen als Referenz in schreibgeschützter Form zum alleinigen Debuggen Ihre Produkte, die Wartung Ihrer Produkte oder die Verbesserung der Interoperabilität Ihrer Produkte mit der Software und schließt ausdrücklich das Recht aus, die Software außerhalb Ihres Unternehmens zu vertreiben.
Es scheint jedoch, dass der Microsoft.SqlServer.*
Namespace an keinem dieser Speicherorte verfügbar ist. Was bedeutet, dass die einfache Antwort auf die Frage: "Ist HierarchyID Open Source?" ist: Nein .
Wenn Sie den Quellcode sehen möchten, müssen Sie die DLL - Microsoft.SqlServer.Types.dll - mit einem Dekompiler öffnen . ABER es gibt potenzielle rechtliche und / oder ethische Probleme, mit denen man sich befassen muss. Dies ist proprietärer Code, daher sind zwei Hauptpunkte zu beachten:
wie in dem SQL Server - Endbenutzer-Lizenzvertrag (EULA) (und wie zitiert in @ ToMV erklärte Antwort ), können Sie nur „ zu dekompilieren oder auseinander zu nehmen “ nicht vorgesehen Code „ nur insoweit ausdrücklich , dass geltendes Recht erlaubt “ . Das bedeutet, dass es für einige Leute völlig legal ist, dies zu tun, für andere jedoch nicht so sehr. Wenden Sie sich daher an einen Anwalt für geistiges Eigentum vor Ort.
Wenn es für Sie legal ist, zu dekompilieren, impliziert die Absicht der Rechtssprache sowie die Tatsache, dass ein Teil des Quellcodes bereitgestellt wird (wie oben verlinkt), dieser bestimmte Code jedoch nicht, sicherlich, dass der Wunsch der Öffentlichkeit besteht diesen Code nicht sehen oder haben. Das legale Dekompilieren sollte also nicht als legales Duplizieren angesehen werden, sondern eher als Referenz (dh zum Debuggen usw.).