我维护的服务器有很多 CLR 对象。这是我第一次遇到他们。也许它们不能正常工作,需要优化。没有来源。我怎样才能找到这些对象的代码?它们可能是用 c# 编写的。我试图运行分析器,但除了“EXEC 'Clr 对象的名称'”之外,我没有在那里看到它。据我了解,我们正在谈论反汇编 DLL 文件?
我维护的服务器有很多 CLR 对象。这是我第一次遇到他们。也许它们不能正常工作,需要优化。没有来源。我怎样才能找到这些对象的代码?它们可能是用 c# 编写的。我试图运行分析器,但除了“EXEC 'Clr 对象的名称'”之外,我没有在那里看到它。据我了解,我们正在谈论反汇编 DLL 文件?
SQLCLR 函数可以由单个编译的 DLL 表示,也可以由具有源代码的 DLL 表示,如果它以这种方式填充(据我所知,这是标准项目模板所做的)。功能列表可索取
这将返回如下内容:
assembly_id指向包含函数代码的程序集。可以通过查询sys.assemblies系统表来获得程序集。与程序集对应的文件存储在sys.assembly_files中。
您可以使用ICSharpCode.Decompiler库从已编译的程序集中提取 C# 代码。
显示文件列表的请求示例:
C#输出指定程序集的所有文件的代码示例:
在这里,我们简单地将字节转换为 .cs 文件的文本,对于 DLL,我们将它们转储到文件中并进行反编译。