public ResxGenWriter(string filename, string nameSpace, string resxNameSpace, bool asPublic, bool asPartial, bool asSealed, string className, string baseException) { _options = new ResXOptions(); _fileName = filename; _nameSpace = nameSpace; _resxNameSpace = resxNameSpace; _public = asPublic; _partial = asPartial; _sealed = asSealed; _className = className; _baseException = baseException; _fullClassName = String.Format("{0}.{1}", _nameSpace, _className); _eventLogger = null; //Environment.CurrentDirectory = Path.GetDirectoryName(_fileName); Parse(_xstrings = new List<ResxString>(), _xexceptions = new Dictionary<string, ResxException>(StringComparer.Ordinal), _xnodes = new List<ResXDataNode>()); _eventLogger = _eventLogger ?? _options.AutoLogMethod; }
public McFileGenerator(IEnumerable <string> files) { _resxFiles = new List <string>(); foreach (string file in files) { if (StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(file), ".csproj")) { _resxFiles.AddRange(ProjectToResXFiles(file)); } else if (StringComparer.OrdinalIgnoreCase.Equals(Path.GetExtension(file), ".resx")) { _resxFiles.Add(file); } else { throw new ApplicationException(String.Format("Unknown file type: {0}", file)); } } _itemsByHResult = new Dictionary <uint, ResxGenItem>(); _itemsByName = new Dictionary <string, List <ResxGenItem> >(StringComparer.OrdinalIgnoreCase); _facilities = new Dictionary <int, string>(); _categories = new Dictionary <int, string>(); _eventsource = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); foreach (string filename in _resxFiles) { Dictionary <string, bool> thisFile = new Dictionary <string, bool>(StringComparer.OrdinalIgnoreCase); ResXOptions options = new ResXOptions(); foreach (ResxGenItem item in options.ReadFile(filename)) { ResxGenItem collision; item.Options["EventMessageFormat"] = options.EventMessageFormat; if (item.Ignored || item.MessageId == 0) { continue; } if (_itemsByHResult.TryGetValue(item.MessageId, out collision)) { throw new ApplicationException(String.Format("The item {0} has a duplicate id {2:x8} with {3} in file {1}.", item.Node.Name, filename, item.MessageId, collision.Node.Name)); } _itemsByHResult.Add(item.MessageId, item); if (!thisFile.ContainsKey(item.ItemName) && _itemsByName.ContainsKey(item.ItemName)) { throw new ApplicationException(String.Format("Duplicate item name {0} found in file {1}.", item.ItemName, filename)); } List <ResxGenItem> list; if (!_itemsByName.TryGetValue(item.ItemName, out list)) { thisFile.Add(item.ItemName, true); _itemsByName.Add(item.ItemName, list = new List <ResxGenItem>()); } list.Add(item); } if (options.FacilityId > 0) { AddKeyValue("Facility", filename, _facilities, options.FacilityId, options.FacilityName); } if (options.EventCategoryId > 0) { AddKeyValue("Category", filename, _categories, options.EventCategoryId, options.EventCategoryName); } if (!String.IsNullOrEmpty(options.EventSource)) { AddKeyValue("Event Source", filename, _eventsource, options.EventSource, options.EventLog); } } }