Информация об изменениях

Сообщение Как скомпилировать .il-файлы из MSBuild ? от 15.02.2017 9:09

Изменено 15.02.2017 9:10 Arsen.Shnurkov

Как скомпилировать .il-файлы из MSBuild ?
Есть такая утилита командной строки — ilasm.exe

Правильно ли я понимаю, что если для утилиты csc.exe сделали отдельный вид проектов, то и для ilasm тоже надо будет делать свой вид проектов (например .ilproj) ?
Это связано с тем, что в .csproj используется вполне конкретный тип MSBuildItem — <Compile>
А если хочется иметь другой тип (например <Assemble>), то надо описывать другой формат проекта, правильно?

Говорят, что когда-то утилита xbuild умела, а потом её поменяли на msbuild и всё перестало работать. Я пробовал поискать пункт создания такого проекта, но сейчас его нет в списки шаблонов проектов (у меня на машине).

В утилите NAnt есть таск ilasm, но NAnt — это вовсе не msbuild.

В MSDN есть пример базового таска для вообще утилит командной строки:
https://msdn.microsoft.com/en-us/library/microsoft.build.utilities.tooltask.aspx
When overridden in a derived form, provides functionality for a task that wraps a command line tool.
и пример производного таска для msbuild, отнаследованный от ToolTask конкретно для ILAsm:
https://msdn.microsoft.com/ru-ru/library/microsoft.build.utilities.commandlinebuilder.appendfilenameifnotnull.aspx

Однако мне не ясно, какие действия надо осуществить, чтобы его использовать
Ну, то есть, что надо делать, чтобы передать сразу несколько .il-файлов в этот таск? (судя по тому, что там свойство не коллекция — сделать это нельзя)

И примеров нет. Как например будет выглядеть файл проекта целиком? Где аддин для monodevelop (вроде бы есть <a href="https://github.com/Tak/monodevelop/tree/master/main/src/addins/ILAsmBinding">ILAsmBinding</a>, в Add-in Manager этот аддин включен, но почему-то визарда для создания таких проектов нет)?
Как скомпилировать .il-файлы из MSBuild ?
Есть такая утилита командной строки — ilasm.exe

Правильно ли я понимаю, что если для утилиты csc.exe сделали отдельный вид проектов, то и для ilasm тоже надо будет делать свой вид проектов (например .ilproj) ?
Это связано с тем, что в .csproj используется вполне конкретный тип MSBuildItem — <Compile>
А если хочется иметь другой тип (например <Assemble>), то надо описывать другой формат проекта, правильно?

Говорят, что когда-то утилита xbuild умела, а потом её поменяли на msbuild и всё перестало работать. Я пробовал поискать пункт создания такого проекта, но сейчас его нет в списке шаблонов проектов (у меня на машине).

В утилите NAnt есть таск ilasm, но NAnt — это вовсе не msbuild.

В MSDN есть пример базового таска для вообще утилит командной строки:
https://msdn.microsoft.com/en-us/library/microsoft.build.utilities.tooltask.aspx
When overridden in a derived form, provides functionality for a task that wraps a command line tool.
и пример производного таска для msbuild, отнаследованный от ToolTask конкретно для ILAsm:
https://msdn.microsoft.com/ru-ru/library/microsoft.build.utilities.commandlinebuilder.appendfilenameifnotnull.aspx

Однако мне не ясно, какие действия надо осуществить, чтобы его использовать
Ну, то есть, что надо делать, чтобы передать сразу несколько .il-файлов в этот таск? (судя по тому, что там свойство не коллекция — сделать это нельзя)

И примеров нет. Как, например, будет выглядеть файл проекта целиком? Где аддин для monodevelop (вроде бы есть <a href="https://github.com/Tak/monodevelop/tree/master/main/src/addins/ILAsmBinding">ILAsmBinding</a>, в Add-in Manager этот аддин включен, но почему-то визарда для создания таких проектов нет)?