コード例 #1
0
        public void EmitMessageTables()
        {
            using var msgFile        = TemporaryFile.Create(".de-DE.tmp");
            options.MessageTableFile = msgFile.FilePath.Replace(".de-DE", "");

            var manifest = new EventManifest();

            manifest.AddResourceSet(new LocalizedResourceSet(CultureInfo.GetCultureInfo("de-DE")));
            compilation.AddManifests(manifest);

            bool success = compilation.EmitMessageTables();

            Assert.True(success);
            Assert.Empty(diags.Diagnostics);
            Assert.NotEqual(0, new FileInfo(msgFile.FilePath).Length);
        }
コード例 #2
0
        private EventManifest ReadCrimBlock(BinaryReader r)
        {
            objectMap.Clear();
            strings.Clear();

            ReadMagic(r, CrimsonTags.CRIM);

            uint   length        = r.ReadUInt32();
            ushort major         = r.ReadUInt16();
            ushort minor         = r.ReadUInt16();
            uint   providerCount = r.ReadUInt32();

            var providerEntries = new List <Tuple <Guid, uint> >();

            for (uint i = 0; i < providerCount; ++i)
            {
                var providerGuid = r.ReadGuid();
                var wevtOffset   = r.ReadUInt32();
                providerEntries.Add(Tuple.Create(providerGuid, wevtOffset));
            }

            var manifest = new EventManifest();

            foreach (var offset in providerEntries)
            {
                r.BaseStream.Position = offset.Item2;
                var provider = ReadWevtBlock(offset.Item1, r);
                manifest.Providers.Add(provider);
            }

            var resourceSet = new LocalizedResourceSet(CultureInfo.GetCultureInfo("en-US"));

            resourceSet.Strings.AddRange(strings.Values);
            manifest.AddResourceSet(resourceSet);

            return(manifest);
        }