private ResourceFileHandlerDiff CompareResourceFileHandlers(ResourceFileHandlerBase leftResourceFileHandler, ResourceFileHandlerBase rightResourceFileHandler)
        {
            var resourceFileHandlerDiff = new ResourceFileHandlerDiff
            {
                Keys = new HashSet <string>(leftResourceFileHandler.Select(e => e.Key).Union(rightResourceFileHandler.Select(e => e.Key)).Distinct(StringComparer.OrdinalIgnoreCase))
            };

            foreach (var key in resourceFileHandlerDiff.Keys)
            {
                string leftResourceValue  = null;
                string rightResourceValue = null;

                leftResourceFileHandler.TryGetValue(key, out leftResourceValue);
                rightResourceFileHandler.TryGetValue(key, out rightResourceValue);

                if (leftResourceValue == null)
                {
                    resourceFileHandlerDiff.LeftResourceFileHandlerMissgingKeys.Add(key);
                }
                else if (rightResourceValue == null)
                {
                    resourceFileHandlerDiff.RightResourceFileHandlerMissgingKeys.Add(key);
                }
                else if (leftResourceValue != rightResourceValue)
                {
                    resourceFileHandlerDiff.Diff.Add(key, new Tuple <string, string>(leftResourceValue, rightResourceValue));
                }
            }

            return(resourceFileHandlerDiff);
        }
        private string BuildCompareReportCsv(ResourceFileHandlerDiff resourceFileHandlerDiff)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.Append("\"key\",\"iOS\",\"Android\"\n");

            foreach (var problematicKey in resourceFileHandlerDiff.Diff)
            {
                stringBuilder.AppendFormat("\"{0}\",\"{1}\",\"{2}\"\n", problematicKey.Key, problematicKey.Value.Item1, problematicKey.Value.Item2);
            }

            return(stringBuilder.ToString());
        }