问题标签 [il]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 是否可以将单个 C# 文件转换为 IL 程序集?
给定一个 c# 源文件,我想输出该单个文件的 IL(未组装),以便稍后我可以将每个“.il”文件提供给 ilasm 以生成程序集,这可能吗?
c# - 使用 IL 构造对象和调用方法
我编写了以下程序以了解 IL 中的对象构造和方法调用不幸的是它没有打印
你好吗
在控制台上。
你有什么主意吗?
peverify 的输出也在下面给出。
C:\temp\Research\Research\bin\Release>peverify Research.exe
Microsoft (R) .NET Framework PE 验证程序。版本 4.0.30319.1 版权所有 (c) Microsoft Corporation。版权所有。
Research.exe 中的所有类和方法均已验证。
C:\temp\Research\Research\bin\Release>
c# - 为二维数组生成 IL
我想使用System.Reflection.Emit
命名空间为二维数组构造生成 IL。
我的 C# 代码是
使用ildasm
,我意识到为上述 C# 代码生成了以下 IL 代码。
我能够生成最后三个 IL 语句,如下所示。
但我对如何生成第一个 IL 语句(即IL_0006: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle
)没有明确的想法)
你有什么主意吗?
此外,有人可以提出一些关于如何使用 System.Reflection.Emit 命名空间来生成 IL 代码的好教程/文档吗?
c# - 为双数组生成 IL
我正在编写一些 IL 机构,用于使用 System.Reflection.Emit 命名空间创建int
和double
数组。
为了创建int
数组,我使用以下代码。
它按预期工作并在控制台上打印 500。
我尝试创建double
数组的方式相同,如下所示。
不幸的是,这不起作用,当我使用pereview
它检查生成的程序集时,出现了以下错误。
此外,我使用检查生成的程序集ildasm
你有什么主意吗?
.net - 每个 .NET 类的最大方法数是多少
标题实际上询问了所有内容,但为了完整起见:
嗨,我正在 .NET 平台上编写一个小型后编译工具,在尝试对其进行优化时,我遇到了一个问题,我无法从通用语言基础架构的 ECMA 标准中轻松找到答案(命令行)。
单个类可以拥有的最大方法数是多少?有限制吗?
编辑:
感谢 Kelsey 指出现实生活中的测试。尽管我仍然会关心实际限制是什么,但出于我实际的现实生活目的,我想知道它是 2^16 / 2^32 -or- 2^31-1,正如他所指出的那样,它似乎明显高于每类 64K 方法..
c# - 为什么以下两种方法会生成相同的 IL?
如果您看到为这两种方法生成的 IL,它们看起来是一样的,或者我错过了什么……为什么第一个 Include 方法会发生装箱?
c# - 这段代码有什么不安全的?
我正在学习 CLR 中的托管和非托管代码。所以我用 C# 中的 C 风格指针编写了这个例子:
所以我想知道我从上面的代码中得到的 IL 代码中真正不安全的是什么?
CLR 是否管理此代码?上面的代码会出现什么问题?
c# - 为递归方法生成 IL
我尝试使用以下策略为递归方法生成 IL,首先我使用以下代码片段定义类型
接下来,我开始为递归方法生成 IL,如下所示。
为了在方法体内调用方法本身,我使用了以下构造,
最后使用以下方法保存生成的程序集。
不幸的是,这不起作用,因为递归方法调用构造,在方法内部返回 null。这里的问题是方法(即ilOfMethod.Emit(OpCodes.Call, typeBuilder.GetMethod("MethodName", new System.Type[] {typeof(arg1),typeof(arg2),etc}));
)内的递归调用返回null。因为我们实际上是在SaveAssembly()
方法内部创建类型,所以这是可以接受的。所以我的问题是:是否可以使用上述构造为递归方法生成 IL?如果不可能,请告诉我用于为递归方法生成 IL 的替代构造。
c# - 如何将 DataReader 结果转换为实体?->使用发射
现在我想将 DataReader 转换为 Entity 。我有这样的方法:
并像这里一样调用方法,
不幸的是,如果 DB 中归档的数据为 NULL,则会出现异常。由于 int 类型不能为 NULL 值,但我将其转移到 int?。然后事实证明我的调用方法效果很好。
但是在这里我想要一个扩展名,即当 DB 中的数据归档为 NULL 时,我们可以使用自定义属性来指示默认值。所以我重新定义了 ReadInt32 如下,但令我惊讶的是,总是出现 JIT 内部异常。我对IL不熟悉,我真的很期待对大家的帮助,非常感谢。
将代码更改如下,但仍然存在错误,异常类型为:System.EntryPointNotFoundException:
c# - 将 C# 代码转换为 IL 代码
如何获得 C# 代码的 IL 代码?我可以使用外部库执行此操作,还是存在内部函数?
编辑:我想用 MessageBox 在我的应用程序中显示 IL 代码。