問題タブ [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'ファイルをilasmにフィードしてアセンブリを生成できるように、その単一ファイルのIL(アセンブルされていない)を出力したいのですが、これは可能ですか?
c# - IL を使用したオブジェクトの構築とメソッドの呼び出し
IL でのオブジェクトの構築とメソッド呼び出しを理解するために、次のプログラムを作成しました。残念ながら、出力されません。
元気ですか
コンソールで。
何か考えはありますか?
peverify の出力も以下に示します。
C:\temp\Research\Research\bin\Release>peverify Research.exe
Microsoft (R) .NET Framework PE 検証ツール。バージョン 4.0.30319.1 Copyright (c) Microsoft Corporation. 全著作権所有。
Research.exe のすべてのクラスとメソッドが検証済みです。
C:\temp\Research\Research\bin\Release>
c# - 2D 配列の IL の生成
System.Reflection.Emit
名前空間を使用して、2D 配列構築用の IL を生成したいと考えています。
私のC#コードは
を使用ildasm
すると、上記の C# コードに対して次の IL コードが生成されることがわかりました。
以下に示すように、最後の 3 つの IL ステートメントを生成できました。
しかし、最初のILステートメントを生成する方法について明確な考えがありません(つまりIL_0006: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle
))
何か考えはありますか?
さらに、誰かが System.Reflection.Emit 名前空間を使用して IL コードを生成する方法について、いくつかの優れたチュートリアル/ドキュメントを指摘できますか?
c# - 二重配列の IL の生成
System.Reflection.Emit 名前空間を使用しint
て配列を作成するための IL 機関をいくつか書いています。double
int
配列を作成するために、次のコードを使用しています。
期待どおりに動作しており、コンソールに 500 が出力されます。
double
以下に示すように、配列を作成しようとしたのと同じ方法です。
残念ながら、これは機能せず、pereview
それを使用して生成されたアセンブリを検査すると、次のエラーが発生しました。
さらに、生成されたアセンブリを次を使用して検査しましたildasm
何か考えはありますか?
.net - What is the maximal number of methods per .NET class
Title asks it all, actually, but still, for completeness sake:
Hi, I'm writing a small post-compiling tool in the .NET platform, and while trying to optimize it, I've encountered a question I can-not easily find an answer to from the ECMA standards for the Common Language Infrastructure (CLI).
What is the max # of methods a single class can have? Is there a limit?
Edit:
Thanks to Kelsey for pointing out to a real-life test. Although I still would care about what the actual limit is, for my actual real-life purposes, I wanted to know if it is 2^16 / 2^32 -or- 2^31-1, as he pointed out, it appears to be clearly above 64K methods per class..
c# - 次の 2 つの方法で同じ IL が生成されるのはなぜですか?
これら 2 つのメソッドに対して生成された IL が表示される場合、それらは同じように見えるか、何か不足しています...なぜ最初のインクルード メソッドでボックス化が発生しているのでしょうか?
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の結果をエンティティに変換する方法は?->Emitを使用する
次に、DataReaderをエンティティに変換します。私はこのような方法を持っています:
このようにメソッドを呼び出します。
残念ながら、DBにファイルされたデータがNULLの場合、例外が発生します。int型はNULL値にすることはできませんが、int?に転送しました。次に、私の呼び出しメソッドがうまく機能することがわかりました。
しかし、ここでは、DBにファイルされたデータがNULLである拡張機能が必要です。カスタム属性を使用して、デフォルト値を示すことができます。そこで、ReadInt32を次のように再定義しましたが、驚いたことに、常にJIT内部例外が発生します。私はILに精通していません。皆さんの助けを本当に楽しみにしています、本当に感謝しています。
次のようにコードを変更しますが、まだエラーが存在します。例外タイプは次のとおりです。System.EntryPointNotFoundException:
c# - C# コードを IL コードに変換する
C# コードの IL コードを取得するにはどうすればよいですか? extern ライブラリまたは存在する内部関数でこれを行うことはできますか?
編集: MessageBox を使用してアプリケーションに IL コードを表示したい。