public static void WriteModuleTo(ModuleDefinition module, Stream stream, WriterParameters parameters) { AssemblyNameDefinition name; if ((int)(module.Attributes & ModuleAttributes.ILOnly) == 0) { throw new NotSupportedException("Writing mixed-mode assemblies is not supported"); } if (module.HasImage && module.ReadingMode == ReadingMode.Deferred) { ImmediateModuleReader.ReadModule(module); } module.MetadataSystem.Clear(); if (module.assembly != null) { name = module.assembly.Name; } else { name = null; } AssemblyNameDefinition publicKey = name; string fullyQualifiedName = stream.GetFullyQualifiedName(); ISymbolWriterProvider symbolWriterProvider = parameters.SymbolWriterProvider; if (symbolWriterProvider == null && parameters.WriteSymbols) { symbolWriterProvider = SymbolProvider.GetPlatformWriterProvider(); } ISymbolWriter symbolWriter = ModuleWriter.GetSymbolWriter(module, fullyQualifiedName, symbolWriterProvider); if (parameters.StrongNameKeyPair != null && publicKey != null) { publicKey.PublicKey = parameters.StrongNameKeyPair.PublicKey; ModuleDefinition attributes = module; attributes.Attributes = attributes.Attributes | ModuleAttributes.StrongNameSigned; } MetadataBuilder metadataBuilder = new MetadataBuilder(module, fullyQualifiedName, symbolWriterProvider, symbolWriter); ModuleWriter.BuildMetadata(module, metadataBuilder); if (module.symbol_reader != null) { module.symbol_reader.Dispose(); } ImageWriter imageWriter = ImageWriter.CreateWriter(module, metadataBuilder, stream); imageWriter.WriteImage(); if (parameters.StrongNameKeyPair != null) { CryptoService.StrongName(stream, imageWriter, parameters.StrongNameKeyPair); } if (symbolWriter != null) { symbolWriter.Dispose(); } }
public static void WriteModuleTo(ModuleDefinition module, Stream stream, WriterParameters parameters) { if ((module.Attributes & ModuleAttributes.ILOnly) == 0) { throw new NotSupportedException("Writing mixed-mode assemblies is not supported"); } if (module.HasImage && (module.ReadingMode == ReadingMode.Deferred)) { ImmediateModuleReader.ReadModule(module); } module.MetadataSystem.Clear(); AssemblyNameDefinition name = module.assembly?.Name; string fullyQualifiedName = stream.GetFullyQualifiedName(); ISymbolWriterProvider symbolWriterProvider = parameters.SymbolWriterProvider; if ((symbolWriterProvider == null) && parameters.WriteSymbols) { symbolWriterProvider = SymbolProvider.GetPlatformWriterProvider(); } ISymbolWriter writer = GetSymbolWriter(module, fullyQualifiedName, symbolWriterProvider); if ((parameters.StrongNameKeyPair != null) && (name != null)) { name.PublicKey = parameters.StrongNameKeyPair.PublicKey; module.Attributes |= ModuleAttributes.StrongNameSigned; } MetadataBuilder metadata = new MetadataBuilder(module, fullyQualifiedName, symbolWriterProvider, writer); BuildMetadata(module, metadata); if (module.symbol_reader != null) { module.symbol_reader.Dispose(); } ImageWriter writer2 = ImageWriter.CreateWriter(module, metadata, stream); writer2.WriteImage(); if (parameters.StrongNameKeyPair != null) { CryptoService.StrongName(stream, writer2, parameters.StrongNameKeyPair); } if (writer != null) { writer.Dispose(); } }
public void Dispose() { symbol_writer.Dispose(); }
public void Dispose() => _symbolWriter.Dispose();