Thư viện Mono.Cecil gần như là những gì bạn muốn. Nó là nguồn mở, ngôn ngữ được trừu tượng hóa và như một phần thưởng, nó được đánh bóng siêu, nhanh và ổn định. Tuy nhiên, nó không phải là chính xác những gì bạn muốn bởi vì Cecil không phân tích mã nguồn C#, VB.NET hoặc F #, nhưng nó phân tích các tập tin (dll và exe) và mã IL chứa trong các assembly. Đối với nhiều vùng phân tích tĩnh, nó sẽ là đủ, nhưng đối với việc truyền liên tục (tôi đoán bạn có nghĩa là hằng số chữ như const string STR = "MyString";
hoặc const int INT = 12345;
) có mất thông tin tại thời gian biên dịch vì giá trị không đổi được mã hóa cứng thay cho cách sử dụng liên tục. Cecil cũng không thích hợp cho phân tích Abstract Syntax Tree.
Bạn cũng có thể xem Microsoft Roslyn. Trái ngược với Cecil, Roslyn phân tích mã nguồn C# và VB.NET, rất phù hợp với phân tích Abstract Syntax Tree, nhưng nó không phải là mã nguồn mở, không hỗ trợ F # và chắc chắn có thể thay đổi cho đến khi nó trở thành RTM, nói năm tới với Visual Studio 2014, (nhưng đây chỉ là phỏng đoán của tôi).
Nguồn
2013-08-27 17:33:32
Bạn nhấn mạnh vào nguồn mở? –