maui-linux/Xamarin.Forms.Build.Tasks/CssGTask.cs

61 строка
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
namespace Xamarin.Forms.Build.Tasks
{
public class CssGTask : Task
{
[Required]
public ITaskItem[] CSSFiles { get; set; }
[Required]
public ITaskItem[] OutputFiles { get; set; }
public string Language { get; set; }
public string AssemblyName { get; set; }
public override bool Execute()
{
bool success = true;
Log.LogMessage(MessageImportance.Normal, "Generating assembly attributes for CSS files");
if (CSSFiles == null || OutputFiles == null) {
Log.LogMessage(MessageImportance.Low, "Skipping CssG");
return true;
}
if (CSSFiles.Length != OutputFiles.Length) {
Log.LogError("\"{2}\" refers to {0} item(s), and \"{3}\" refers to {1} item(s). They must have the same number of items.", CSSFiles.Length, OutputFiles.Length, "CSSFiles", "OutputFiles");
return false;
}
for (var i = 0; i < CSSFiles.Length;i++) {
var cssFile = CSSFiles[i];
var outputFile = OutputFiles[i].ItemSpec;
var generator = new CssGenerator(cssFile, Language, AssemblyName, outputFile, Log);
try {
if (!generator.Execute()) {
//If Execute() fails, the file still needs to exist because it is added to the <Compile/> ItemGroup
File.WriteAllText(outputFile, string.Empty);
}
}
catch (XmlException xe) {
Log.LogError(null, null, null, cssFile.ItemSpec, xe.LineNumber, xe.LinePosition, 0, 0, xe.Message, xe.HelpLink, xe.Source);
success = false;
}
catch (Exception e) {
Log.LogError(null, null, null, cssFile.ItemSpec, 0, 0, 0, 0, e.Message, e.HelpLink, e.Source);
success = false;
}
}
return success;
}
}
}