Cleaned up handling of assembly directory. This fixes the fact that .pdb files weren't put in the same directory as the corresponding modules.

This commit is contained in:
jfrijters 2009-08-19 06:23:55 +00:00
Родитель 940d9991dc
Коммит d00d9c27a7
3 изменённых файлов: 8 добавлений и 13 удалений

Просмотреть файл

@ -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)

Просмотреть файл

@ -1015,7 +1015,7 @@ namespace IKVM.Reflection.Emit
{
get
{
return Path.GetFullPath(fileName);
return Path.GetFullPath(Path.Combine(asm.dir, fileName));
}
}

Просмотреть файл

@ -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)