- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在玩 ILDasm 并注意到:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Runtime.dll (36KB)
只返回一个 list 文件。反编译C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.dll (114KB)
返回程序集中的 list 和所有类型。 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\mscorlib.dll (38KB)
只需返回一个 list 文件并反编译C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll (5171KB)
返回程序集中的 list 和所有类型。 最佳答案
您在 C:\Program Files (x86)\Reference Assemblies 中找到的程序集是引用程序集。它们在 .NET 4.0 及更高版本中相当特殊,它们不包含任何代码,仅包含类型声明。编译器仅使用此类程序集中的元数据来编译您的代码。在运行时,您会得到一个非常不同的程序集,它是从 GAC 中检索的。
请注意,您会在该目录中找到 System.Runtime.dll 的许多副本,尤其是 .NETPortable 目录有许多配置文件,每个配置文件都有自己的该引用程序集的副本。使用不同的类型集,适用于该特定配置文件的类型。
您在 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中找到的程序集是 GAC 中的程序集的副本。无论您实际安装的是什么版本的框架。你应该 从不将这些程序集用于任何事情。尽管那里的许多程序集仍然有 [AssemblyVersion("4.0.0.0")],但它们的内容却大不相同,尤其是在 4.0 和 4.5 之间。您可以在文档 ExtensionAttribute class 中看到这一点。是一个很好的例子。在 .NET 4.0 中,它位于 System.Core.dll 中,在 4.5 及更高版本中,它现在位于 mscorlib.dll 中。如果这些副本不再存在会更好,不幸的是 System.CodeDom、sgen.exe 和遗留工具取决于它们的存在。使用它们作为引用可以be very troublesome当程序在安装了不同框架版本的另一台机器上运行时。
因此,请查看 GAC 中的程序集以了解运行时实际发生的情况。自 .NET 4.0 以来也有很大的变化,它现在位于另一个目录中。以前在 c:\windows\assembly,现在在 c:\windows\microsoft.net\assembly。最明显的变化是,它不再具有阻止您导航到该目录中文件的 shell 扩展名。您可以直接导航 GAC 文件夹结构。这有点令人费解,因为包含非托管代码(如 mscorlib.dll)的程序集存储在单独的目录中。看一看,你会很容易弄清楚这个方案。
您会发现 C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll 程序集确实相当空。但是,您可能错过了 list 中最重要的细节。它包含很多 [TypeForwardedTo] 属性。您会在那里找到的一些片段:
[assembly: TypeForwardedTo(typeof(Action))]
[assembly: TypeForwardedTo(typeof(Action<>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,,,,,>))]
[assembly: TypeForwardedTo(typeof(Action<,,,,,,,,,,,,,,,>))]
// etc, many more
关于.net - ILDasm、mscorlib 和 System.Runtime 反编译差异取决于目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22743434/
我通过在我的 Ubuntu 18.04 上安装了 ildasm nuget install Microsoft.NETCore.ILDAsm 我以某种方式结束了两个目录: /home/vagrant/
我们需要修补程序集,目前无法从源代码重建。我可以使用 ildasm mydll.dll/all/out=mydll.il 转储 IL,然后我可以使用 ilasm/dll mydll.il 重建它,这一
当我执行以下代码时,ILDASM 中显示以下内容。我的疑问是,即使子类方法将被执行,为什么 ILDASM 显示调用了 Baseclass 方法。是因为实例是BaseClass类型吗?如果这是基类如何访
我最近升级到 VS 2017 并卸载了以前的 VS 2015。 但是,当我尝试构建和编译我的项目时,我不断收到错误消息: Microsoft.Build.Utilities.ToolLocationH
Mono 是否有等效的 ILDASM? 最佳答案 是的,monodis是 Mono 的 ildasm 等价物。 $ 猫 a.cs 公共(public)课 Foo { 公共(public)静态无效 Ma
是否有方便的方法或工具可以在 visual studio 2010 中为我执行以下操作。 启动 ILDasm在 ILDasm 中从 Visual Studio 中加载当前程序集。 与我启动 visua
使用 c#, ,Net framework 4.5 记事本 尝试理解 CIL (IL) 语言的原理。目前创建2个简单的方法 public static Int32 Add(Int32 a, Int3
对于 CIL/MSIL,我可以在文本编辑器中编写代码,然后使用 ilasm/ildasm 进行编译/反编译。 我可以使用 Reflector 查看 .NET 类生成的 CIL。 在 Java 世界中,
我正在尝试使用 Eazfuscator.Net 3.3 混淆我的 xamarin dll,但我收到一条错误消息,提示“无法找到工具 ildsam.exe”。 我该如何解决这个问题? 我选择了 3.3
你们中有人以前遇到过这个问题吗? 我试图在运行 Windows 7 Professional SP1 的计算机上对 Visual Studio 2008 SP1 上用 C#/.NET 3.5 编写的解
一些商业混淆器 claim they can crash ILDASM (以及其他类似的工具,例如 Reflector) 对他们如何实现这一目标有任何想法吗? 正如这里的许多主题所述,有足够动力/时间
我正在测试 .NET Reactor,当我仅将 .NET Reactor 与 Anti ILDASM 一起使用时,这是否足以防止其他人查看我的源代码?我已经用 Reflector 尝试过这样一个 pr
.net-core 是否有 ILDASM/ILASM 的等价物? 具体来说,我正在寻找可以在 Linux 上运行的东西(因此需要 .net-core)。 最佳答案 ildasm 和 ilasm 工具都
我一直在玩 ILDasm 并注意到: 反编译C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Runtime.dll (36KB)只返回一个 l
如果我 NGen 一个程序集,ildasm 仍然分解它是否正常? 好的。我编写了一个 HelloWorld 类库,随后的 dll 被命名为 NGenILDasmTest.dll。 --> 针对 .Ne
我曾经能够在 Visual Studio 2017 的开发人员命令提示符中运行 ildasm。对于 Visual Studio 2019,ildasm 不再可用: C:\Program Files (
我正在尝试针对 .NetCore3.1 控制台应用程序运行作为 Visual Studio 2019 的一部分安装的 ildasm(中级语言反汇编程序)。 使用 Visual Studio 2019
我们有一个客户,他有两个 .NET 程序集,A 和 B: 程序集 A 引用程序集 B。 程序集 A 未签名,未混淆,没有可用的源代码。 程序集 B 已签名,未混淆,有可用的源代码。 我想修改程序集 A
我刚刚安装了 Visual Studio 2008,并希望使用 Microsoft 中间语言反汇编程序 ( ILDASM.exe ) 看一些DLL s。 问题是,在命令行上无法识别“ildasm ”,
尝试按照教程步骤反汇编可执行的 c# 文件,但每当我在命令提示符下键入 ildasm 时,它都会显示在开发人员 powershell 中无法识别。当我对 dll 文件执行此操作时,也会显示相同的消息。
我是一名优秀的程序员,十分优秀!