public MyResourceDataFile(string fileName) { #if DOTNETCORE var reader = new System.Resources.Extensions.DeserializingResourceReader(fileName); #else var reader = new System.Resources.ResourceReader(fileName); #endif this.FileName = fileName; this.Name = Path.GetFileNameWithoutExtension(fileName); var objValues = new Dictionary <string, object>(); var strValues = new Dictionary <string, string>(); var resouceSet = new System.Resources.ResourceSet(reader); var enumer = resouceSet.GetEnumerator(); var lstData = new List <byte>(); bool hasBmpValue = false; while (enumer.MoveNext()) { string itemName = (string)enumer.Key; var item = new MyResourceDataItem(); item.Name = itemName; item.StartIndex = lstData.Count; item.Key = _Random.Next(1000, int.MaxValue - 1000); item.Value = enumer.Value; if (enumer.Value is string) { item.IsBmp = false; string str = (string)item.Value; int key = item.Key; for (int iCount = 0; iCount < str.Length; iCount++, key++) { var v = str[iCount] ^ key; lstData.Add((byte)(v >> 8)); lstData.Add((byte)(v & 0xff)); } } else if (enumer.Value is System.Drawing.Bitmap) { item.IsBmp = true; hasBmpValue = true; var ms = new System.IO.MemoryStream(); ((System.Drawing.Bitmap)item.Value).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); var bs2 = ms.ToArray(); byte key = (byte)item.Key; for (int iCount = 0; iCount < bs2.Length; iCount++, key++) { bs2[iCount] = (byte)(bs2[iCount] ^ key); } lstData.AddRange(bs2); } else { throw new NotSupportedException(item.Value.GetType().FullName); } item.BsLength = lstData.Count - item.StartIndex; this.Items.Add(item); } resouceSet.Close(); this.Datas = lstData.ToArray(); }
public static int FillValues2(string fileName, Dictionary <string, System.Tuple <string, byte[]> > values) { int result = 0; using (var reader = new System.Resources.Extensions.DeserializingResourceReader(fileName)) { var enumer = reader.GetEnumerator(); while (enumer.MoveNext()) { string name = Convert.ToString(enumer.Key); string resType = null; byte[] itemData = null; object enumValue = enumer.Value; if (enumValue is string) { resType = null; itemData = System.Text.Encoding.UTF8.GetBytes((string)enumValue); } else if (enumValue is System.Drawing.Bitmap) { resType = "System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a";// typeof(System.Drawing.Bitmap).AssemblyQualifiedName; var ms = new System.IO.MemoryStream(); _bf.Serialize(ms, enumValue); itemData = ms.ToArray(); ms.Close(); } if (resType != null && resType.Length > 0 && itemData != null && itemData.Length > 0) { values[name] = new Tuple <string, byte[]>(resType, itemData); result++; } } } return(result); }