Last active
August 29, 2015 14:17
-
-
Save bradphelan/f2e77b39ce1c50ab2d60 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#I @"../../lib/Fake/tools" | |
#r @"FakeLib.dll" | |
#load @"Fake.DSC.fsx" | |
open Fake | |
open System.IO | |
open Fake.DSC | |
// Fake isn't really like make even though it pretends to be. The cool thing about make | |
// is that it only builds stuff when it needs to be changed. Fake builds everything every time. You | |
// can add conditions on the dependencies but there are no real built in methods for change | |
// tracking. | |
// The below demonstrates a simple framework for change tracking | |
// based on MD5 signitures. A fingerprint database is saved between builds to | |
// detect upstream changes and actions will only be triggered if the signiture of | |
// any of the upstream dependencies change. | |
// Fake's inbuilt dependency trees are used but are handled automatically within | |
// the DSL | |
// Questions or suggestions to | |
// @bradgonesurfing on twitter | |
FileTarget.CopyTo "a.txt" "aa.txt" | |
"build.out" <== [| "a.txt"; "b.txt" |] <| | |
fun target sources -> | |
let text = | |
sources | |
|> Seq.map File.ReadAllText | |
File.WriteAllText(target, System.String.Join("\n", text)) | |
TemplateTarget.Build "message.out" [| ("@name","brad"); ("@age","24")|] "message.tpl" | |
ZipTarget.Build id "build.zip" [| "build.out"; "message.out" |] | |
FileTarget.Run "build.zip" | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#r @"..\..\lib\FAKE\tools\FakeLib.dll" | |
#r "System.Runtime.Serialization.dll" | |
open Fake | |
open System | |
open System.Collections.Generic | |
open System.IO | |
open System.Security.Cryptography | |
open System.Runtime.Serialization | |
open System.Xml | |
let md5 file = | |
let info = file |> fileInfo | |
match info with | |
| x when not x.Exists -> failwithf "File %s does not exist." x.FullName | |
| x when x.Length = 0L -> "" | |
| x -> | |
use hashAlgorithm = new MD5CryptoServiceProvider() | |
File.ReadAllBytes(x.FullName) | |
|> hashAlgorithm.ComputeHash | |
|> BitConverter.ToString | |
type target = | |
val id:string | |
new(id:string, action:unit->unit, condition:unit->bool) = { id = id} then | |
Target id (fun () -> | |
if condition() then | |
traceFAKE "Executing target %s" id | |
action() | |
else | |
traceFAKE "Skipping target %s" id | |
) | |
new(id:string) = {id = id} then | |
if TargetDict.ContainsKey id |> not then | |
tracefn "YY: Creating target %s" id | |
Target id DoNothing | |
module HashTarget = | |
let dbFile = "db.fake" | |
let dict = | |
try | |
use stream = new FileStream(dbFile, FileMode.Open) | |
use reader = XmlDictionaryReader.CreateTextReader(stream, XmlDictionaryReaderQuotas()) | |
let ser = DataContractSerializer(typeof<Dictionary<string*string,string>>) | |
ser.ReadObject(reader, true) :?> Dictionary<string*string,string> | |
with _ -> Dictionary<_, _>() | |
FinalTarget "SaveHash" ( fun _ -> | |
use writer = new FileStream(dbFile, FileMode.Create) | |
let ser = new DataContractSerializer(dict.GetType()) | |
ser.WriteObject(writer, dict) | |
) | |
ActivateFinalTarget "SaveHash" | |
/// <summary> | |
/// Runs an action if the hashes change from the previous build. By | |
/// convention the head of the hashes sequence is the target and the tail | |
/// contains the sources. | |
/// </summary> | |
/// <param name="action"></param> | |
/// <param name="hashes"></param> | |
let create (action:unit->unit) (hashes:(string*(unit->string)) seq) : target = | |
// By convention the head is the target | |
let (targetId,_) = Seq.head hashes | |
// Ensure that the sources are all valid FAKE targets | |
hashes | |
|> Seq.skip 1 | |
|> Seq.iter ( fun (sourceId,_) -> target(sourceId) |> ignore) | |
// wrap the action so that the hashes are updated on | |
// successfull execution of the action | |
let action = fun _ -> | |
action() | |
hashes | |
|> Seq.iter (fun (sourceId, hashF) -> | |
dict.[(targetId,sourceId)] <- hashF() ) | |
// the condition returns true if the hashes have changed | |
// since the last time | |
let condition = fun _ -> | |
hashes | |
|> Seq.exists (fun (sourceId, hashF) -> | |
match dict.TryGetValue((targetId,sourceId)) with | |
| true, sourceHash -> sourceHash <> hashF() | |
| _ -> true | |
) | |
// hook the FAKE target system | |
let t = target(targetId, action, condition) | |
// hook the FAKE dependency system | |
hashes | |
|> Seq.iter (fun (sourceId, _) -> | |
tracefn "%s ==> %s" sourceId targetId | |
if(sourceId<>targetId)then sourceId ==> targetId |> ignore) | |
t | |
module FileTarget = | |
let private fileTargetId name = | |
( "file://" + (Path.GetFullPath name |> FileSystemHelper.normalizeFileName )) | |
let Build targetFile (sourceFiles:string seq) (action:string->string seq->unit) = | |
let action() = | |
action targetFile sourceFiles | |
let hashes = | |
seq { | |
// Target hash | |
yield (fileTargetId targetFile, ( fun _ -> | |
if File.Exists targetFile then | |
md5 targetFile | |
else "") ) | |
// Source hashes | |
for f in sourceFiles do | |
yield fileTargetId f, fun _ -> | |
md5 f | |
} | |
HashTarget.create action hashes | |
let CopyTo targetFile sourceFile = | |
Build targetFile [|sourceFile|] (fun _ _ -> FileHelper.CopyFile targetFile sourceFile ) | |
let Run targetFile = | |
RunTargetOrDefault (fileTargetId targetFile) | |
let (<==) target sources = | |
fun action -> | |
FileTarget.Build target sources action | |
module ZipTarget = | |
type Config = { | |
WorkingDir : string | |
Comment : string | |
Level : int | |
Flatten : bool | |
} | |
let Build cfgfn targetFile (sourceFiles:string seq) = | |
let cfg = cfgfn { | |
WorkingDir = "." | |
Comment="" | |
Level=4 | |
Flatten=false | |
} | |
let action targetFile sources = | |
ZipHelper.CreateZip cfg.WorkingDir targetFile cfg.Comment cfg.Level cfg.Flatten sources | |
FileTarget.Build targetFile sourceFiles action | |
module TemplateTarget = | |
let Build targetFile replacements templateFile = | |
let action _ _ = | |
FileHelper.CopyFile targetFile templateFile | |
TemplateHelper.processTemplates replacements [| targetFile |] | |
FileTarget.Build targetFile [templateFile] action | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> ..\..\lib\FAKE\tools\Fake.exe | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Building project with version: LocalBuild | |
Shortened DependencyGraph for Target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip: | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
The resulting target order is: | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt (==> file://c:\users\phelan\workspace\bu | |
ild.tools\scripts\dsc\aa.txt) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\a.txt, file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out (==> file://c:\users\phelan\worksp | |
ace\build.tools\scripts\dsc\message.tpl) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\build.out, file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Creating Zipfile: build.zip (Level: 4) | |
Adding File build.out | |
Adding File message.out | |
Zip successfully created build.zip | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting FinalTarget: savehash | |
--------------------------------------------------------------------- | |
Build Time Report | |
--------------------------------------------------------------------- | |
Target Duration | |
------ -------- | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt 00:00:00.0001822 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt 00:00:00.0081052 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt 00:00:00.0000003 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out 00:00:00.0027720 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl 00:00:00.0000003 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out 00:00:00.0104791 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip 00:00:00.0351777 | |
SaveHash 00:00:00.0059316 | |
Total: 00:00:00.0833236 | |
Status: Ok | |
--------------------------------------------------------------------- | |
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
> ..\..\lib\FAKE\tools\Fake.exe | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Building project with version: LocalBuild | |
Shortened DependencyGraph for Target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip: | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
The resulting target order is: | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt (==> file://c:\users\phelan\workspace\bu | |
ild.tools\scripts\dsc\aa.txt) | |
Skipping target file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\a.txt, file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt) | |
Skipping target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out (==> file://c:\users\phelan\worksp | |
ace\build.tools\scripts\dsc\message.tpl) | |
Skipping target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\build.out, file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out) | |
Skipping target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting FinalTarget: savehash | |
--------------------------------------------------------------------- | |
Build Time Report | |
--------------------------------------------------------------------- | |
Target Duration | |
------ -------- | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt 00:00:00.0001773 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt 00:00:00.0026811 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt 00:00:00.0000003 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out 00:00:00.0008334 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl 00:00:00 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out 00:00:00.0003730 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip 00:00:00.0005704 | |
SaveHash 00:00:00.0051194 | |
Total: 00:00:00.0274193 | |
Status: Ok | |
--------------------------------------------------------------------- | |
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> echo "update file" > "aa.txt" | |
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> ..\..\lib\FAKE\tools\Fake.exe | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
YY: Creating target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Building project with version: LocalBuild | |
Shortened DependencyGraph for Target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip: | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
<== file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
The resulting target order is: | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
- file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt (==> file://c:\users\phelan\workspace\bu | |
ild.tools\scripts\dsc\aa.txt) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\a.txt, file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out (==> file://c:\users\phelan\worksp | |
ace\build.tools\scripts\dsc\message.tpl) | |
Skipping target file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out | |
Starting Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip (==> file://c:\users\phelan\workspac | |
e\build.tools\scripts\dsc\build.out, file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out) | |
Executing target file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Creating Zipfile: build.zip (Level: 4) | |
Adding File build.out | |
Adding File message.out | |
Zip successfully created build.zip | |
Finished Target: file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip | |
Starting FinalTarget: savehash | |
--------------------------------------------------------------------- | |
Build Time Report | |
--------------------------------------------------------------------- | |
Target Duration | |
------ -------- | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt 00:00:00.0001755 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt 00:00:00.0077410 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt 00:00:00.0000003 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out 00:00:00.0027253 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl 00:00:00.0000003 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out 00:00:00.0003970 | |
file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip 00:00:00.0329985 | |
SaveHash 00:00:00.0055741 | |
Total: 00:00:00.0683635 | |
Status: Ok | |
--------------------------------------------------------------------- | |
C:\Users\phelan\workspace\Build.Tools\scripts\DSC [implement-dsc +3 ~6 -0 !] | |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<ArrayOfKeyValueOfTupleOfstringstringstringRDHGY3MA xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>a.txt</a:m_Item1> | |
<a:m_Item2>aa.txt</a:m_Item2> | |
</Key> | |
<Value>4D-4F-BA-CD-87-33-6D-34-3E-B1-84-00-48-85-D3-AD</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>build.out</a:m_Item1> | |
<a:m_Item2>a.txt</a:m_Item2> | |
</Key> | |
<Value>4D-4F-BA-CD-87-33-6D-34-3E-B1-84-00-48-85-D3-AD</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>build.out</a:m_Item1> | |
<a:m_Item2>b.txt</a:m_Item2> | |
</Key> | |
<Value>46-0E-16-E6-7F-A7-8C-34-F9-B1-0E-F2-DC-53-70-C7</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\aa.txt</a:m_Item2> | |
</Key> | |
<Value>4F-59-C0-52-09-77-8A-9C-59-18-16-35-C1-A1-37-7F</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\a.txt</a:m_Item2> | |
</Key> | |
<Value>4F-59-C0-52-09-77-8A-9C-59-18-16-35-C1-A1-37-7F</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\b.txt</a:m_Item2> | |
</Key> | |
<Value>46-0E-16-E6-7F-A7-8C-34-F9-B1-0E-F2-DC-53-70-C7</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.out</a:m_Item2> | |
</Key> | |
<Value>BA-EA-27-CC-04-A7-CA-4F-B5-21-CC-0D-95-64-98-E0</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.tpl</a:m_Item2> | |
</Key> | |
<Value>61-FE-6D-3C-C4-21-8E-73-5D-D8-BD-17-F7-0E-DA-32</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
<Key xmlns:a="http://schemas.datacontract.org/2004/07/System"> | |
<a:m_Item1>file://c:\users\phelan\workspace\build.tools\scripts\dsc\build.zip</a:m_Item1> | |
<a:m_Item2>file://c:\users\phelan\workspace\build.tools\scripts\dsc\message.out</a:m_Item2> | |
</Key> | |
<Value>B4-2D-B4-6E-35-98-FD-77-CB-5D-8E-F7-0C-7D-F7-2A</Value> | |
</KeyValueOfTupleOfstringstringstringRDHGY3MA> | |
</ArrayOfKeyValueOfTupleOfstringstringstringRDHGY3MA> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment