четверг, 4 февраля 2010 г.

Ant, MSBuild и расширения

Проглядывал на днях презентацию одного доклада, про сборщик из мира java - Ant.

В общем все стандартно, после знакомства с msbuild, кроме одной фишки, которая жутко понравилась - возможность  прямо в скрипте подключить расширение написанное на Java.

Для Delphi и msbuild приходится извращаться, компилить промежуточные exe-шники, писать утилитки и т.п.

Хотя наверное можно попробовать набросать какую-то мелочь на .Net - там тоже можно динамически подключить таск.

...после некоторых копаний...



Сделать можно, и довольно таки просто, см. пример ниже. По сути - мы на лету, внутри самого проекта, компилим расширение msbuild написанное на c#, подключаем его в этот же проект и в нем же используем. Благо оказалось что с .Net SDK идет компилятор С#.

Все полностью

 <Project DefaultTargets = "MyTarget"  
   xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >  
  <UsingTask TaskName="SimpleTask.HelloTask" AssemblyFile="C:\iqs.tools\tests\msbuild_test\HelloTask.dll"/>   
   <ItemGroup>  
     <CSFile Include = "HelloTask.cs"/>  
   </ItemGroup>  
   <Target Name = "Compile">  
     <CSC   
      Sources = "@(CSFile)"  
      References = "Microsoft.Build.Framework.dll; Microsoft.Build.Tasks.dll; Microsoft.Build.Utilities.dll"  
      TargetType = "library"/>  
   </Target>  
   <Target Name="MyTarget">  
    <CallTarget Targets="Compile" />  
    <HelloTask MyProperty="Hello!"/>  
   </Target>  
 </Project>  

2 комментария:

Анонимный комментирует...

Ппц дорогая редакция, чтобы сделать мульку для сборки нужна dll-ка, написанная под .net!

Где баш? где перл? где нормальные скриптовые языки?
Дожили. Не дай бог вернуться под эту "платформу".

Это ж проклятие!

Как компилил из линукса под винду, так и буду компилить. Вот.

pnv82 комментирует...

Скриптовые языки?? Без нормальной поддержки привычных инструментов разработки?
Ретроградстов какое-то... :)