/// <summary> /// Main entry point to create a <see cref="CacheManagerSettings"/> section. /// </summary> /// <param name="configurationSourceBuilder">The builder interface to extend.</param> /// <returns>A fluent interface to further configure the caching configuration section.</returns> public static ICachingConfiguration ConfigureCaching(this IConfigurationSourceBuilder configurationSourceBuilder) { if (configurationSourceBuilder == null) throw new ArgumentNullException("configurationSourceBuilder"); CacheManagerSettings cacheSettings = new CacheManagerSettings(); configurationSourceBuilder.AddSection(CacheManagerSettings.SectionName, cacheSettings); return new CachingConfigurationBuilder(cacheSettings); }
/// <summary> /// Main entry point to configuration a <see cref="LoggingSettings"/> section. /// </summary> /// <param name="configurationSourceBuilder">The builder interface to extend.</param> /// <returns></returns> public static ILoggingConfigurationStart ConfigureLogging(this IConfigurationSourceBuilder configurationSourceBuilder) { if(configurationSourceBuilder == null) throw new ArgumentNullException("configurationSourceBuilder"); LoggingSettings loggingSettings = new LoggingSettings(); configurationSourceBuilder.AddSection(LoggingSettings.SectionName, loggingSettings); return new LoggingConfigurationBuilder(loggingSettings); }
static Wd.Range InsertSectionInMiddldOfSection(this Wd.Range range, string Path) { var AddedSection = range.AddSection(); range = range.InsertFile_Safe(Path, "Section"); AddedSection.Next().Delete(); return range; }
static Wd.Range InsertSectionAtEndOfSection(this Wd.Range range, string Path) { var NextSection = range.Sections[1].Next(); var AddedSection = range.AddSection(); range = range.InsertFile_Safe(Path, "Section"); AddedSection.Next().Delete(); NextSection.Previous().Delete(); return range; }
static Wd.Range InsertSectionAtEndOfDocument(this Wd.Range range, string Path) { var AddedSection = range.AddSection(); range = range.InsertFile_Safe(Path, "Section"); AddedSection.Next().Delete(); range.Document.Sections.Last.Delete(); return range; }
public static void AddManagedSections( this PEBuilder peBuilder, PEDirectoriesBuilder peDirectoriesBuilder, TypeSystemMetadataSerializer metadataSerializer, BlobBuilder ilStream, BlobBuilder mappedFieldData, BlobBuilder managedResourceData, Action<BlobBuilder, PESectionLocation> nativeResourceSectionSerializer, // opt int strongNameSignatureSize, // TODO MethodDefinitionHandle entryPoint, string pdbPathOpt, // TODO ContentId nativePdbContentId, // TODO ContentId portablePdbContentId, // TODO CorFlags corFlags) { int entryPointAddress = 0; // .text peBuilder.AddSection(".text", SectionCharacteristics.MemRead | SectionCharacteristics.MemExecute | SectionCharacteristics.ContainsCode, location => { var sectionBuilder = new BlobBuilder(); var metadataBuilder = new BlobBuilder(); var metadataSizes = metadataSerializer.MetadataSizes; var textSection = new ManagedTextSection( metadataSizes.MetadataSize, ilStreamSize: ilStream.Count, mappedFieldDataSize: mappedFieldData.Count, resourceDataSize: managedResourceData.Count, strongNameSignatureSize: strongNameSignatureSize, imageCharacteristics: peBuilder.ImageCharacteristics, machine: peBuilder.Machine, pdbPathOpt: pdbPathOpt, isDeterministic: peBuilder.IsDeterministic); int methodBodyStreamRva = location.RelativeVirtualAddress + textSection.OffsetToILStream; int mappedFieldDataStreamRva = location.RelativeVirtualAddress + textSection.CalculateOffsetToMappedFieldDataStream(); metadataSerializer.SerializeMetadata(metadataBuilder, methodBodyStreamRva, mappedFieldDataStreamRva); BlobBuilder debugTableBuilderOpt; if (pdbPathOpt != null || peBuilder.IsDeterministic) { debugTableBuilderOpt = new BlobBuilder(); textSection.WriteDebugTable(debugTableBuilderOpt, location, nativePdbContentId, portablePdbContentId); } else { debugTableBuilderOpt = null; } entryPointAddress = textSection.GetEntryPointAddress(location.RelativeVirtualAddress); textSection.Serialize( sectionBuilder, location.RelativeVirtualAddress, entryPoint.IsNil ? 0 : MetadataTokens.GetToken(entryPoint), corFlags, peBuilder.ImageBase, metadataBuilder, ilStream, mappedFieldData, managedResourceData, debugTableBuilderOpt); peDirectoriesBuilder.AddressOfEntryPoint = entryPointAddress; peDirectoriesBuilder.DebugTable = textSection.GetDebugDirectoryEntry(location.RelativeVirtualAddress); peDirectoriesBuilder.ImportAddressTable = textSection.GetImportAddressTableDirectoryEntry(location.RelativeVirtualAddress); peDirectoriesBuilder.ImportTable = textSection.GetImportTableDirectoryEntry(location.RelativeVirtualAddress); peDirectoriesBuilder.CorHeaderTable = textSection.GetCorHeaderDirectoryEntry(location.RelativeVirtualAddress); return sectionBuilder; }); // .rsrc if (nativeResourceSectionSerializer != null) { peBuilder.AddSection(".rsrc", SectionCharacteristics.MemRead | SectionCharacteristics.ContainsInitializedData, location => { var sectionBuilder = new BlobBuilder(); nativeResourceSectionSerializer(sectionBuilder, location); peDirectoriesBuilder.ResourceTable = new DirectoryEntry(location.RelativeVirtualAddress, sectionBuilder.Count); return sectionBuilder; }); } // .reloc if (peBuilder.Machine == Machine.I386 || peBuilder.Machine == 0) { peBuilder.AddSection(".reloc", SectionCharacteristics.MemRead | SectionCharacteristics.MemDiscardable | SectionCharacteristics.ContainsInitializedData, location => { var sectionBuilder = new BlobBuilder(); WriteRelocSection(sectionBuilder, peBuilder.Machine, entryPointAddress); peDirectoriesBuilder.BaseRelocationTable = new DirectoryEntry(location.RelativeVirtualAddress, sectionBuilder.Count); return sectionBuilder; }); } }
public static void InsertLandscapeSection(this Wd.Selection selection) { if (selection.PageSetup.Orientation == Wd.WdOrientation.wdOrientPortrait) { Wd.Section section = selection.AddSection(); selection.AddSection(); section.Next().ToggleOrientation(); section.Next().PageSetup.DifferentFirstPageHeaderFooter = 0; section.Next().ContinueNumbering(); section.Next().Next().PageSetup.DifferentFirstPageHeaderFooter = 0; section.Next().Next().ContinueNumbering(); } else throw new InvalidOperationException("This section is already in Landscape orientation."); }