From d00d9c27a703bdc1cbbe87164098168bcb4bcdf3 Mon Sep 17 00:00:00 2001 From: jfrijters Date: Wed, 19 Aug 2009 06:23:55 +0000 Subject: [PATCH] Cleaned up handling of assembly directory. This fixes the fact that .pdb files weren't put in the same directory as the corresponding modules. --- refemit/AssemblyBuilder.cs | 10 +++++----- refemit/ModuleBuilder.cs | 2 +- refemit/Writer/ModuleWriter.cs | 9 ++------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/refemit/AssemblyBuilder.cs b/refemit/AssemblyBuilder.cs index 2cfe7ca3..eaf6f2d0 100644 --- a/refemit/AssemblyBuilder.cs +++ b/refemit/AssemblyBuilder.cs @@ -41,7 +41,7 @@ namespace IKVM.Reflection.Emit #endif { private readonly AssemblyName name; - private readonly string dir; + internal readonly string dir; private readonly PermissionSet requiredPermissions; private readonly PermissionSet optionalPermissions; private readonly PermissionSet refusedPermissions; @@ -63,7 +63,7 @@ namespace IKVM.Reflection.Emit private AssemblyBuilder(AssemblyName name, string dir, PermissionSet requiredPermissions, PermissionSet optionalPermissions, PermissionSet refusedPermissions) { this.name = name; - this.dir = dir; + this.dir = dir ?? "."; this.requiredPermissions = requiredPermissions; this.optionalPermissions = optionalPermissions; this.refusedPermissions = refusedPermissions; @@ -241,12 +241,12 @@ namespace IKVM.Reflection.Emit int fileToken; if (entryPoint != null && entryPoint.ModuleBuilder == moduleBuilder) { - ModuleWriter.WriteModule(dir, null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, null, entryPoint.MetadataToken); + ModuleWriter.WriteModule(null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, null, entryPoint.MetadataToken); entryPointToken = fileToken = AddFile(manifestModule, moduleBuilder.fileName, 0 /*ContainsMetaData*/); } else { - ModuleWriter.WriteModule(dir, null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, null, 0); + ModuleWriter.WriteModule(null, moduleBuilder, fileKind, portableExecutableKind, imageFileMachine, null, 0); fileToken = AddFile(manifestModule, moduleBuilder.fileName, 0 /*ContainsMetaData*/); } moduleBuilder.ExportTypes(fileToken, manifestModule); @@ -259,7 +259,7 @@ namespace IKVM.Reflection.Emit } // finally, write the manifest module - ModuleWriter.WriteModule(dir, name.KeyPair, manifestModule, fileKind, portableExecutableKind, imageFileMachine, versionInfoData, entryPointToken); + ModuleWriter.WriteModule(name.KeyPair, manifestModule, fileKind, portableExecutableKind, imageFileMachine, versionInfoData, entryPointToken); } private int AddFile(ModuleBuilder manifestModule, string fileName, int flags) diff --git a/refemit/ModuleBuilder.cs b/refemit/ModuleBuilder.cs index 04a69bec..3a73903b 100644 --- a/refemit/ModuleBuilder.cs +++ b/refemit/ModuleBuilder.cs @@ -1015,7 +1015,7 @@ namespace IKVM.Reflection.Emit { get { - return Path.GetFullPath(fileName); + return Path.GetFullPath(Path.Combine(asm.dir, fileName)); } } diff --git a/refemit/Writer/ModuleWriter.cs b/refemit/Writer/ModuleWriter.cs index 457cead4..58e36b1b 100644 --- a/refemit/Writer/ModuleWriter.cs +++ b/refemit/Writer/ModuleWriter.cs @@ -36,7 +36,7 @@ namespace IKVM.Reflection.Emit.Writer { private const int versionInfoResourceHeaderLength = 0x58; - internal static void WriteModule(string directory, StrongNameKeyPair keyPair, ModuleBuilder moduleBuilder, PEFileKinds fileKind, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine, ByteBuffer versionInfoData, int entryPointToken) + internal static void WriteModule(StrongNameKeyPair keyPair, ModuleBuilder moduleBuilder, PEFileKinds fileKind, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine, ByteBuffer versionInfoData, int entryPointToken) { moduleBuilder.FixupMethodBodyTokens(); @@ -48,12 +48,7 @@ namespace IKVM.Reflection.Emit.Writer moduleBuilder.UserStrings.Add(" "); } - string fileName = moduleBuilder.fileName; - if (directory != null) - { - fileName = Path.Combine(directory, fileName); - } - using (FileStream fs = new FileStream(fileName, FileMode.Create)) + using (FileStream fs = new FileStream(moduleBuilder.FullyQualifiedName, FileMode.Create)) { PEWriter writer = new PEWriter(fs); switch (imageFileMachine)