зеркало из https://github.com/mono/ikvm-fork.git
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:
Родитель
940d9991dc
Коммит
d00d9c27a7
|
@ -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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче