public IModuleBuilder CreateModuleBuilder(string assemblyName, string assemblyDirectoryOrNull, bool strongNamed, string keyFilePathOrNull) { ArgumentUtility.CheckNotNullOrEmpty("assemblyName", assemblyName); var assemName = new AssemblyName(assemblyName); if (strongNamed) { assemName.KeyPair = GetKeyPair(keyFilePathOrNull); } var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemName, AssemblyBuilderAccess.RunAndSave, assemblyDirectoryOrNull); var moduleName = assemblyName + ".dll"; var moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName, emitSymbolInfo: true); var moduleBuilderAdapter = new ModuleBuilderAdapter(moduleBuilder); var typePipeAttribute = new CustomAttributeDeclaration(s_typePipeAssemblyAttributeCtor, new object[] { _participantConfigurationID }); moduleBuilderAdapter.AssemblyBuilder.SetCustomAttribute(typePipeAttribute); return(moduleBuilderAdapter); }
public IModuleBuilder CreateModuleBuilder(string assemblyName, string assemblyDirectoryOrNull, bool strongNamed, string keyFilePathOrNull) { ArgumentUtility.CheckNotNullOrEmpty("assemblyName", assemblyName); var assemName = new AssemblyName(assemblyName); if (strongNamed) { #if FEATURE_STRONGNAMESIGNING assemName.KeyPair = GetKeyPair(keyFilePathOrNull); #else throw new PlatformNotSupportedException(); #endif } #if FEATURE_ASSEMBLYBUILDER_SAVE var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemName, AssemblyBuilderAccess.RunAndSave, assemblyDirectoryOrNull); #else var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemName, AssemblyBuilderAccess.Run); #endif var moduleName = assemblyName + ".dll"; #if FEATURE_PDBEMIT var moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName, emitSymbolInfo: true); #else var moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName); #endif var moduleBuilderAdapter = new ModuleBuilderAdapter(moduleBuilder); var typePipeAttribute = new CustomAttributeDeclaration(s_typePipeAssemblyAttributeCtor, new object[] { _participantConfigurationID }); moduleBuilderAdapter.AssemblyBuilder.SetCustomAttribute(typePipeAttribute); return(moduleBuilderAdapter); }