.NET源代码很多,尽管有各种许可证,但其中很多是开源的。还有其他代码可用,但仅供参考,不能在您的代码中使用。
鉴于声明的目标是:
我想为必然要达到此限制的复杂的现有应用程序增加该限制。我不想更改类型的界面。我不相信我可以开始更改类型的接口,而不会在所有必须更改的代码中引入细微的错误。
如果要更新当前的层次结构类型,那么代码是否为“开源”是无关紧要的,因为即使是开放源代码,您也永远无法在整个系统中进行任何更改:即使您可以在SQL Server,您将无法使用相同的证书/私钥对其进行签名,因此系统将不会使用它。
但是,您可以构建自己的SQLCLR用户定义类型(UDT)以提供所需的功能。
尽管如此,由于它与更好地理解.NET Framework有关,因此:
您可以在此处查看大多数内容的源代码:https : //github.com/Microsoft/referencesource
甚至还有更多东西在这里:https://github.com/dotnet/corefx
上面提到的两个存储库都是开放源代码的,并且大多受MIT许可证管辖,尽管可以肯定的是,您需要在每个位置(有时在各个文件夹中)查看许可信息。
可以在这里找到许多剩余的代码:http : //referencesource.microsoft.com/
在ReferenceSource.Microsoft.com(直接在上方的链接)上找到的但在前两个链接(均为开放源代码)中也找不到的代码不是开放源代码,而是由MICROSOFT参考源许可证(MS-RSL)控制,相关部分将被删除(在该词组的用法之后,对其进行了轻微的编辑,以将“引用用法”的定义放在首位):
许可方授予您不可转让,非排他的,全球范围内的免版税版权许可,以复制该软件供参考使用:您公司内部的软件以只读形式作为参考,仅供调试之用您的产品,维护您的产品或增强产品与该软件的互操作性,并且明确排除了将软件分发到公司外部的权利。
但是,似乎Microsoft.SqlServer.*
在这些位置中的任何位置都不提供名称空间。这意味着对以下问题的简单答案:“ HierarchyID是开源的吗?” 是:否。
如果希望看到源代码,则需要使用反编译器打开DLL- Microsoft.SqlServer.Types.dll。但是,存在潜在的法律和/或道德问题要处理。这是专有代码,因此有两点要考虑:
如SQL Server最终用户许可协议(EULA)所述(并在@TomV的答案中引用),仅在适用法律明确允许的范围内,您才能“ 反向工程,反编译或反汇编 ”未提供的代码” 。这意味着对于某些人来说,这样做是完全合法的,但是对其他人而言,则不是那么多。因此,您可能需要咨询当地的知识产权律师。
如果您要进行反编译是合法的,则应遵循法律语言的意图,再加上提供了某些源代码(位于顶部的链接),但没有提供此特定代码的事实,这肯定意味着,这是普通大众的愿望没有看到或没有此代码。因此,不应认为反编译是合法的,因为它也可以复制,但更多的以便可以用作参考(即用于调试等)。