寫入CIL
回答
組裝IL操作碼不包含註釋,所以你不能拆卸,並得到了評論。基本上,你不能這樣做。要麼共享IL源,要麼調查一個pdb是否可能用於原始IL源。
沒有「意見」的操作碼。
* .il確實包含它們(// MyClass的結尾)。 –
@Alan是的,但il文件不是組裝的操作碼。註釋在組裝到操作碼時被丟棄**,並且不存在於組件中。因此,他們不能通過評論拆分回.il。作爲另一個例子,一個.il文件可能包含空白 - 也不會保留 –
您可以編寫出使用ILGenerator.Emit
任意IL操作碼,但我不認爲有注射評論任何支持那裏。
如果你只是想爲調試目的(例如使搜索更容易),你總是可以用描述性的名稱添加一個未使用的變量做到這一點。例如:
void Main()
{
var a = new A();
}
class A
{
bool this_is_a_comment = false;
}
產生
IL_0001: newobj UserQuery+A..ctor
IL_0006: stloc.0
A..ctor:
IL_0000: ldarg.0
IL_0001: ldc.i4.0
IL_0002: stfld UserQuery+A.this_is_a_comment
IL_0007: ldarg.0
IL_0008: call System.Object..ctor
IL_000D: nop
IL_000E: ret
但這不是一個評論。 –
- 1. 如何將CIL代碼插入到C#
- 2. CIL ANTLR語法?
- 3. 在CIL中分支
- 4. 優化CIL輸出
- 5. .NET CIL Call或CallVirt?
- 6. 在CIL中做什麼「auto」,「ansi」和「cil managed」?
- 7. Frama-C:在Cil謂詞中替換Cil術語
- 8. .NET CIL代碼大小
- 9. CIL的邏輯指令
- 10. CIL堆棧交換指令
- 11. CIL中的nop是什麼?
- 12. CIL執行On Error Resume Next
- 13. CIL指令「isinst <valuetype>」
- 14. 在CIL(MSIL)中的Stringbuilder
- 15. 如何編譯CIL代碼?
- 16. 在CIL(OCaml)中打印
- 17. 在cil代碼中獲得'ldftn'函數指針,在cil代碼中使用ldftn'
- 18. NET CIL操作評估堆棧
- 19. CIL如何使用網絡/ http請求?
- 20. 瞭解特定的CIL/CLR優化
- 21. 哪些語言編譯成CIL/MSIL
- 22. CIL unbox_any指令 - 奇怪的行爲
- 23. 瞭解MSIL中的點(CIL)關鍵字
- 24. 這些CIL語句有什麼區別?
- 25. .NET中CIL知識的優點
- 26. 錯誤在CIL中。未找到方法:'?'
- 27. ldc.i4.m1和ldc.i4.M1在CIL中
- 28. 將C源文件合併爲CIL
- 29. 以編程方式拆解CIL
- 30. CIL和陣列邊界檢查
只是出於興趣,你爲什麼要這麼做? – Adam
這是不可能的。最實用的方法是簡單地要求C#程序的所有者與您分享代碼。你有沒有,也許你會得到一個是的。找出答案的唯一方法就是問。鑑於將一個exe反編譯回C#代碼是多麼容易,你會比你想象的更頻繁地得到一個yes。微軟公佈.NET框架的源代碼的原因。 –