You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.6 KiB
53 lines
1.6 KiB
3 years ago
|
<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>
|