git / moonbite-core / build_msvc/msbuild/tasks/hexdump.targets · raw

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">  <UsingTask    TaskName="HeaderFromHexdump"    TaskFactory="CodeTaskFactory"    AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll" >    <ParameterGroup>        <RawFilePath Required="true" />        <HeaderFilePath Required="true" />        <SourceHeader Required="true" />        <SourceFooter Required="true" />    </ParameterGroup>    <Task>      <Using Namespace="System"/>      <Using Namespace="System.IO"/>      <Code Type="Fragment" Language="cs"><![CDATA[Log.LogMessage("msbuild inline hexdump task for " + RawFilePath + ".");if(File.Exists(RawFilePath) == false) {    Log.LogError("hexdump task could not locate " + RawFilePath + ".");}else {    FileInfo inFileInfo = new FileInfo(RawFilePath);    FileInfo outFileInfo = new FileInfo(HeaderFilePath);    if (outFileInfo.Exists == false || inFileInfo.LastWriteTime > outFileInfo.LastWriteTime)    {      using (Stream inStm = File.OpenRead(RawFilePath))      {          using (StreamWriter sw = new StreamWriter(HeaderFilePath))          {              sw.WriteLine(SourceHeader);              int count = 0;              int rawChar = inStm.ReadByte();              while(rawChar != -1)              {                  sw.Write("0x{0:x2}, ", rawChar);                  count++;                  if(count % 8 == 0)                  {                      sw.WriteLine();                  }                  rawChar = inStm.ReadByte();              }              sw.WriteLine(SourceFooter);          }      }   }}]]>      </Code>    </Task>  </UsingTask></Project>