Repro
Program.cs:
using System;
class Program
{
static void Main(string[] args)
{
const float f = 1.0f;
double x = f;
Console.WriteLine(x);
}
}
csc Program.cs /debug:portable
pdb2pdb a.exe
pdb2pdb a.exe /pdb a.pdb2 /out a.pdb3
PDB0017: token 0x06000001: Invalid local constant data
The second step produces a PDB with NIL constant token signature since there is no StandAloneSig in a.exe that matches float signature.
The third step then calls ISymUnmanagedConstant.GetSignature on such constant and reports an error.
We could infer the constant signature from the value for primitive types.
Repro
Program.cs:
csc Program.cs /debug:portablepdb2pdb a.exepdb2pdb a.exe /pdb a.pdb2 /out a.pdb3The second step produces a PDB with NIL constant token signature since there is no StandAloneSig in a.exe that matches
floatsignature.The third step then calls ISymUnmanagedConstant.GetSignature on such constant and reports an error.
We could infer the constant signature from the value for primitive types.