53 lines
No EOL
1.6 KiB
XML
53 lines
No EOL
1.6 KiB
XML
<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> |