2016-09-29 2 views
0

Xamarin Forms AppでGrial UI Kitを使用しています。私はmentioned here両方のiOSの指示に従っています& Android。 iOSではうまく動作します。 Androidの場合、Colors.ttファイルの2行目にエラーが発生します。Xamarin Forms with Grial UIキットのXML解析エラー

Colors.ttファイルは、以下のコードがあります: "XML" <#@出力延長=#>

エラーメッセージ:エラーがライン#2にスローされ

<#@ template language="C#" hostspecific="True" #> 
<#@ output extension=".xml" #> 
<#@ assembly name="System.Core" #> 
<#@ assembly name="System.Drawing" #> 
<#@ assembly name="System.Xml" #> 
<#@ import namespace="System.Linq" #> 
<#@ import namespace="System.Text" #> 
<#@ import namespace="System.Collections.Generic" #> 
<#@ import namespace="System.Xml" #> 
<#@ import namespace="System.Drawing" #> 
<#@ import namespace="System.Globalization" #> 
<#@ import namespace="System.Text.RegularExpressions" #> 
<#@ assembly name="System.Windows" #> 
<#@ import namespace="System.Windows" #> 
<# 
string path = Host.ResolvePath("../../../PCLFolderName/App.xaml"); 
XmlDocument doc = new XmlDocument(); 
doc.Load(path); 

Dictionary<string, Color> knownColors = new Dictionary<string, Color>(); 
List<string> exports = new List<string>(); 

XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("artina", "clr-namespace:UXDivers.Artina.Shared;assembly=UXDivers.Artina.Shared"); 
nsmgr.AddNamespace ("xamarin", "http://xamarin.com/schemas/2014/forms"); 

XmlNode resources = doc.DocumentElement.SelectSingleNode("/xamarin:Application/xamarin:Application.Resources/xamarin:ResourceDictionary", nsmgr); 

if (resources != null) { 
    foreach (XmlNode node in resources.ChildNodes) { 
     if (node.NodeType == XmlNodeType.Comment) { 
      var comment = node.InnerText.Trim(); 

      Match match = Regex.Match(comment, @"Export\s([A-Za-z0-9\-]+)$", RegexOptions.IgnoreCase); 

      if (match.Success) 
      { 
       exports.Add (match.Groups[1].Value); 
      } 
     } 
     else if (node.Name == "Color") { 
      string colorName = null; 

      foreach (XmlAttribute attribute in node.Attributes) { 
       if (attribute.LocalName == "Key") { 
        colorName = attribute.Value; 
        var colorDefinition = node.InnerText.Trim(); 
        Color color; 

        if (colorDefinition.StartsWith ("#")) { 
         if (colorDefinition.Length == 7) { 
          colorDefinition = "FF" + colorDefinition; 
         } 

         int argb = Int32.Parse (colorDefinition.Replace ("#", ""), NumberStyles.HexNumber); 
         color = Color.FromArgb (argb); 
        } else { 
         color = Color.FromName (colorDefinition); 
         string colorString = string.Format("#FF{0:X2}{1:X2}{2:X2}", 
         color.R, color.G, color.B); 

         color = System.Drawing.ColorTranslator.FromHtml(colorString); 
        } 

        knownColors.Add (colorName, color); 
       } 
      } 
     } 
    } 
}    
if (exports.Count > 0){ 
#> 
<?xml version="1.0" encoding="utf-8" ?> 
<resources> 
    <!-- Artina Exported Colors --> 
<# 
    foreach(var name in exports){ 
    Color color; 

    if (knownColors.TryGetValue(name, out color)){ 
#> 
    <color name="<#= name #>">#<#= color.A.ToString("X2") #><#= color.R.ToString("X2") #><#= color.G.ToString("X2") #><#= color.B.ToString("X2") #></color> 
<# 
    } 
    } 
#> 
</resources> 
<# 
} 
#> 

を次のとおりです。

XMLをパースエラー:整形式ではない(無効なトークン)

はanybを持っていますああ、これに前に直面した?どんな解決策やコメントも感謝しています。

ありがとうございました。 ノエル

PS:

  1. 開発は、Mac上でVS2015 + Xamarin VS +のWindows 10を使用して行われます。
  2. すべてのSDKが更新されました。

答えて

0

これは、colors.ttファイルのビルドアクションをNoneに変更することで解決しました。