EF 迁移 resx 文件中的目标字段采用哪种格式?

Mat*_*ier 6 .net entity-framework ef-code-first

使用实体框架,在使用代码优先的迁移文件时,它会生成.resx文件 (xml),其中包含一个名为 的数据字段Target

  <data name="Target" xml:space="preserve">
    <value>H4sIAAAAAAAEAO ... ICAA==</value>
  </data>
Run Code Online (Sandbox Code Playgroud)

该字段是哪种格式?将==在数据的结尾让觉得是的base64,但解码时,它看起来就像是二进制数据。有人知道数据的结构/格式吗?

小智 9

它是一个 edmx/xml 文件,已经被 gzipped 然后 base64 编码。以下应用程序将打印给定 .resx 文件的 xml。

using System;
using System.Collections;
using System.IO;
using System.IO.Compression;
using System.Resources;
using System.Xml.Linq;

namespace ResxReader
{
    class Program
    {
        private const string ResxFilename = @"full path to your .resx file";

        public static void Main()
        {
            var reader = new ResXResourceReader(ResxFilename);
            IDictionaryEnumerator resources = reader.GetEnumerator();

            while (resources.MoveNext())
            {
                if ("Target".Equals(resources.Key))
                {
                    XDocument target = Decompress(Convert.FromBase64String(resources.Value.ToString()));

                    Console.Write(target);
                }
            }
        }

        public static XDocument Decompress(byte[] bytes)
        {

            using (var memoryStream = new MemoryStream(bytes))
            {
                using (var gzipStream = new GZipStream(memoryStream, CompressionMode.Decompress))
                {
                    return XDocument.Load(gzipStream);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 给未来读者的提示是,“ResXResourceReader”位于“System.Resources”命名空间中,并且来自“System.Windows.Forms.dll”...因此,不必费心将上述内容粘贴到 .NET Core 应用程序中。 (2认同)