msbuild自定义编译器/构建脚本

时间:2014-07-18 19:36:33

标签: tfs msbuild

我试图将TFS和MSBuild用作非.NET项目的构建和源代码控制。该项目包含一系列单独的.skbsrc文件,每个文件都编译成.skb文件。我试图弄清楚是否有可能以某种方式使用MSBuild来构建这些文件。

说我在msdn网站上使用这个例子:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Compile Include="testfile.skbsrc" />
  </ItemGroup>
  <Target Name="Build">
    <Csc Sources="@(Compile)"/>  
  </Target>
</Project>

Csc显然用于C#代码,并运行csc.exe程序。有没有办法可以为我自己的编译器(skbuilder)创建一个这样的块,所以我可以运行:

<Skbuilder Sources="@(Compile)" />

反过来会运行

>skbuilder testfile.skbsrc

如果msbuild可以实现这一点,那么有人可以发布一个例子吗?我在搜索中找不到任何内容。

非常感谢你。

2 个答案:

答案 0 :(得分:3)

您可以在msbuild中创建自定义任务来执行此操作。 "CSC"是C#中的默认任务,因此您需要为您的exe实现类似的任务。

这个MSDN article解释了如何为msbuild编写任务。

答案 1 :(得分:3)

查看Exec Task

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <SourceFiles Include="*.skbsrc"/>
    </ItemGroup>

    <Target Name="Build">
        <Exec Command="skbuilder &quot;%(SourceFiles.Identity)&quot;"/>
    </Target>

</Project>

您还需要将参数传递给您的skbuilder程序,告诉它将其输出到$(OutDir)目录或使用复制任务将* .skb传递给$(OutDir) 。在参数周围使用引号,因为TFS工作空间路径中包含空格。

最后,您可以在不使用TFS的情况下在自己的计算机上进行测试,方法是创建一个简单的.BAT文件:

set PATH=%CD%;C:\Windows\Microsoft.NET\Framework\v4.0.30319
msbuild build.proj > build.log