問題タブ [assemblybuilder]
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# - FileVersion が機能しない DLL を動的に作成する
DLL を動的に構築していますが、FileVersion の書き込みが機能しません。
私が使用しているコードは、この Microsoft リンクからのものであり、EXE/DLL のバージョンは 1.0.0.2001 であると予想しています: http://msdn.microsoft.com/en-us/library/system.reflection.assemblyname.version。 aspx
しかし、実際の結果は FileVersion が書き込まれません:
c# - 動的コードからの例外スタック トレースの間違ったファイル パスと行番号
System.Reflection.Emit を使用して、実行時にソース コードからコードを生成しています (はい - コンパイラのように)。MarkSequencePoint などを使用して ILGenerator に正しいシンボル情報を提供し、AssemblyBuilder ですべてのデバッグ フラグを有効にします。アセンブリは、それをコンパイルしたのと同じプロセスでメモリに保持され、直接実行されます。
Visual Studio デバッガーを使用して動的に生成されたコードのソースをステップ実行すると、実際には完全に機能し、Visual Studio はファイルと行番号に関してコードがどこから来たのかを完全に認識しているようです。
HOWEVER -生成されたコードによって例外がスローされると、System.Exception オブジェクトには完全に間違ったスタック トレースが含まれます。それらは、他の (有効だが間違った) ファイルと行番号を指しています。クラスとメソッド名は正しく取得されますが、ポイントされているファイルと行番号は、実際に例外が発生したコード パスとは何の関係もありません。
指摘されたファイルは無関係であるため、インライン化または最適化にリンクできないようです。私が見つけることができる唯一のパターンは、いくつかのファイルによってオフセットされているように見えることです (アセンブリが構築された元のソース ファイルのアルファベット順に並べ替えられた架空のリスト内)。ただし、このパターンは 100% 一貫しているわけではなく、これが問題の原因に関連しているとは思えません。
例外から System.Diagnostics.Debug オブジェクトを構築すると、同じエラー情報が含まれます。
.NET ランタイムは、デバッガーがコードのステップ実行に使用するものと同じメタデータを使用して例外スタック トレースを作成すると想定しています。この場合、この動作は非常に奇妙です。
これが動的なインメモリ アセンブリを処理する際の .NET の既知のバグであるかどうか、または他の領域で同様の問題が発生したことがあるかどうかを調べようとしています。
c# - 動的アセンブリからの型の削除
AssemblyBuilder
/ ModuleBuilder
/を使用して新しいタイプを作成しましたTypeBuilder
。後で同じランタイムからこの型を削除する方法はありますか?