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
<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> |