This project is read-only.

Generates Pdb files for assemblies compiled with Roslyn

Topics: APIs
Sep 15, 2014 at 8:34 PM
I am trying to compile a series of projects into DLLs, and it works.

This is my code.
var solution = await ciSolution.GetSolutionAsync();

            var applicationDirectory = Assembly.GetExecutingAssembly().Location;

            var roslynDirectory = Path.Combine(Path.GetDirectoryName(applicationDirectory), "Roslyn");

            foreach (var project in solution.Projects)
            {
                var filePath = project.OutputFilePath;

                var filename = Path.GetFileName(filePath); 

                Directory.CreateDirectory(roslynDirectory);

                using (var stream = new FileStream(Path.Combine(roslynDirectory, filename), FileMode.OpenOrCreate))
                {
                    var compilation = await project.GetCompilationAsync();
                     
                    compilation.Emit(stream);
                }
            }
The problem is that I can't understand how generates also the Pdb files to debug the DLLs created with Roslyn.

Any suggestion?

Thanks in advance

Simone
Sep 15, 2014 at 10:18 PM
The Emit method has two optional parameters; pdbStream and pdbFilePath. Use pdbStream to provide a stream to which the corresponding pdb should be written. You can also use pdbFilePath to customize which name it should have.
Marked as answer by TomasMatousek on 9/17/2014 at 7:24 PM
Sep 15, 2014 at 11:34 PM
Hi Jesper, I just tried your suggestion and it works!

Thank you very much!

Simone