Tôi đã xây dựng nguồn Roslyn là described here.Bước qua trình biên dịch Roslyn C#
Tôi muốn thêm một breakpoint trong biên dịch C# và bước qua compliation của chương trình đơn giản này:
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var result = 1 + 2;
Console.WriteLine(result);
}
}
}
tôi nên thiết lập một breakpoint ở đâu? Nó cần được sớm trong quá trình biên dịch như tôi muốn bước qua phân tích cú pháp và thậm chí lexing.
Nếu tôi đặt CompilerExtension làm dự án khởi động và nhấn F5 (Bắt đầu gỡ lỗi), một bản sao của Visual Studio được khởi chạy chạy trình biên dịch mới được xây dựng. Tôi muốn tránh phải khởi động một thể hiện mới của Visual Studio mỗi khi tôi muốn bước qua trình biên dịch. Một cách tốt để thiết lập một chương trình nhỏ gọi mã trình biên dịch trên nguồn trên trực tiếp là gì?
Bạn có thể thêm dự án mới vào giải pháp Roslyn, thêm tham chiếu vào các dự án Microsoft.CodeAnalysis chính xác và sau đó gọi 'CSharpSyntaxTree.ParseText()' và 'Compilation.Emit()'. Sau đó, bạn có thể bước qua mã phân tích hoặc phát ra mà bạn quan tâm. – JoshVarty
Cảm ơn Josh! Tôi đã thêm một câu trả lời thể hiện 'ParseText'. @JoshVarty – dharmatech
Tôi đã viết một bài viết trên blog dựa trên những gì @JoshVarty đề xuất ở đây và trong một trong các bài viết trên blog của anh ấy. Điều này có thể được quan tâm cho bất cứ ai muốn chơi xung quanh với Roslyn internals. https://renniestechblog.com/information/33-modifying-roslyn-step-1-initial-test – RenniePet