Мне просто любопытно узнать, можно это сделать или нет. Я не планирую делать это, если он не принесет значительных преимуществ в производительности. Я веб-разработчик и разработчик игр, но обычно я не разрабатываю игры на C #.
Можно ли кодировать в MSIL?
Ответы (4)
Да, это возможно - вы можете использовать ilasm
(поставляется с .NET SDK) для компиляции вашего кода. Однако в Visual Studio для этого нет поддержки IDE. Нет никаких преимуществ в производительности, которые вы могли бы извлечь из этого, которые вы не смогли бы получить другими способами - в частности, C ++ / CLI охватывает все низкоуровневые функции CLR, которые могут дать некоторые преимущества и недоступны из C # или VB. - в первую очередь, распаковка без копирования (ref
), простые неограниченные указатели на функции (в отличие от делегатов) и связанные инструкции calli
IL и ref
(управляемый указатель на языке CLI) локальные переменные (в отличие от просто параметров).
Да, ты можешь; Microsoft MSIL Assembler (ilasm.exe) из .NET SDK скомпилирует ваш IL в исполняемый код. Я не вижу причин для этого, за исключением очень конкретных областей, где вы обнаружили существенное улучшение производительности.
Вот подробная, если датирована, статья с описанием как это сделать.
Или вы можете выпустить немного CIL из вашего C #. Передача литерала объекта в ILGenerator
В IDE #Develop (Sharp Develop) есть плагин для проектов il. Я не использовал его, поэтому не уверен, насколько он полезен. http://www.icsharpcode.net/OpenSource/SD/