@ -512,7 +512,41 @@ namespace ICSharpCode.Decompiler.CSharp
}
if (b.Length == 0)
b.Append('-');
return b.ToString();
string name = b.ToString();
if (IsReservedFileSystemName(name))
return name + "_";
return name;
static bool IsReservedFileSystemName(string name)
{
switch (name.ToUpperInvariant()) {
case "AUX":
case "COM1":
case "COM2":
case "COM3":
case "COM4":
case "COM5":
case "COM6":
case "COM7":
case "COM8":
case "COM9":
case "CON":
case "LPT1":
case "LPT2":
case "LPT3":
case "LPT4":
case "LPT5":
case "LPT6":
case "LPT7":
case "LPT8":
case "LPT9":
case "NUL":
case "PRN":
return true;
default:
return false;
public static string GetPlatformName(Metadata.PEFile module)
@ -84,7 +84,8 @@ namespace ICSharpCode.Decompiler.DebugInfo
lock (metadata) {
var sourceBlob = WriteSourceToBlob(metadata, sourceText, out var sourceCheckSum);
var name = metadata.GetOrAddDocumentName(type.GetFullTypeName(reader).ReflectionName.Replace('.', Path.DirectorySeparatorChar) + ".cs");
var typeName = type.GetFullTypeName(reader).TopLevelTypeName;
var name = metadata.GetOrAddDocumentName(Path.Combine(WholeProjectDecompiler.CleanUpFileName(typeName.Namespace), WholeProjectDecompiler.CleanUpFileName(typeName.Name) + ".cs"));
// Create Document(Handle)
var document = metadata.AddDocument(name,