52 строки
1.3 KiB
C#
52 строки
1.3 KiB
C#
|
// Copyright (C) 2012 Xamarin, Inc. All rights reserved.
|
||
|
|
||
|
using System;
|
||
|
using System.IO;
|
||
|
using System.Text;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
using Microsoft.Build.Framework;
|
||
|
using Microsoft.Build.Utilities;
|
||
|
|
||
|
namespace Xamarin.ObjcBinding.Tasks {
|
||
|
public class CreateEmbeddedResources : Task
|
||
|
{
|
||
|
[Required]
|
||
|
public ITaskItem[] BundleResourcesWithNames { get; set; }
|
||
|
|
||
|
[Output]
|
||
|
public ITaskItem[] EmbeddedResources { get; set; }
|
||
|
|
||
|
static string MangleResourceName (string resName)
|
||
|
{
|
||
|
var sb = new StringBuilder (resName);
|
||
|
sb.Replace ("_", "__");
|
||
|
sb.Replace ("/", "_f");
|
||
|
sb.Replace ("\\", "_b");
|
||
|
return sb.ToString ();
|
||
|
}
|
||
|
|
||
|
public override bool Execute ()
|
||
|
{
|
||
|
EmbeddedResources = new ITaskItem[BundleResourcesWithNames.Length];
|
||
|
|
||
|
for (int i = 0; i < BundleResourcesWithNames.Length; i++) {
|
||
|
var item = BundleResourcesWithNames[i];
|
||
|
|
||
|
// clone the item
|
||
|
var newItem = new TaskItem (item.ItemSpec);
|
||
|
item.CopyMetadataTo (newItem);
|
||
|
|
||
|
// mangle the resource name
|
||
|
var logicalName = "__monotouch_content_" + MangleResourceName (item.GetMetadata ("BundleResourceName"));
|
||
|
newItem.SetMetadata ("LogicalName", logicalName);
|
||
|
|
||
|
// add it to the output connection
|
||
|
EmbeddedResources[i] = newItem;
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
}
|