2016-02-27 4 views
0

Как скомпилировать с mc.exe правильным способом. В настоящее время у меня есть шаг сборки, который выполняет соответствующую команду, но смотрит на developer networkMC.exe in msbuild

Кажется, что это лучший способ.

Я не эксперт с msbuild, поэтому, пожалуйста, извините, как легко этот вопрос. Googling не показал никакой помощи

<Project 
    DefaultTargets="Build" 
    ToolsVersion="14.0" 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <ItemGroup> 
    <Filter Include="Message Source Files"> 
     <Extensions>mc;</Extensions> 
     <UniqueIdentifier>{B796B525-44D3-4260-8C76-705DBADA1043}</UniqueIdentifier> 
    </Filter> 
    </ItemGroup> 

    <ItemGroup> 
    <MessageCompile Include="a.mc"> 
     <GenerateBaselineResource>true</GenerateBaselineResource> 
    </MessageCompile> 
    </ItemGroup> 

    <Target Name="Build"> 
    <DontKnowWhatGoesHere Sources="@(MessageCompile)"/> 
    </Target> 
</Project> 

ответ

0

MSBuild сборки, как правило, с помощью расширенного .targets файлов, которые должны быть включены в проект, и они расширяют существующий строить PROCES. The WDK tasks for MSBuild страница подтверждает это:

Эти инструменты командной строки должны подвергаться MSBuild в качестве задач (содержащихся в мишенях), так что они могут быть запущены в процессе сборки.

страница WDK MSDN также есть страница помощи на Windows driver targets:

В WindowsDriver.Common.targets, WindowsDriver.masm.targets и WindowsDriver.arm.targets файлы обеспечивают цели, которые необходимы для создания драйвера.

Быстрый Grep в моем C:\Program Files (x86)\Windows Kits\10\build каталог показал, что MessageCompileцель (шаг, который фактически обрабатывает MessageCompile элементов) определяется в файле build\WindowsDriver.Common.targets.

После importing цели вашего проекта вы можете сделать одно из следующих действий:

<Import 
    Project="C:\Program Files (x86)\Windows Kits\10\build\build\WindowsDriver.Common.targets" /> 


<!-- Option A: --> 
<Target Name="Build" DependsOnTargets="MessageCompile"> 
    <!-- no need to do anything, the dependency target should do the work --> 
</Target> 


<!-- Option B: --> 
<Target Name="Build" DependsOnTargets="MessageCompile"> 
    <!-- Use the Mc task which is the actual wrapper around the .exe, 
     see the .common.targets file for the list of all parameters --> 
    <Mc 
    Sources       ="@(MessageCompile)" 
    ToolExe       ="$(MessageCompileToolExe)" 
    ToolPath      ="$(MessageCompileToolPath)" 
    Generated 
    /> 
</Target>