Tôi có một dự án demo, tạo ra một assembly và sử dụng nó. Tôi cũng có thể gỡ lỗi mã được tiêm. Nhưng nếu tôi chạy bảo hiểm, phân tích hoặc lược tả, nó được tính, nhưng tôi muốn đo lường nó.Phạm vi, phân tích và lược tả mã cho mã được tạo động
Code:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = false; // debug enabled
parameters.OutputAssembly = "DynamicCode.dll"; // if specified creates the DLL
parameters.IncludeDebugInformation = true;
CompilerResults results = icc.CompileAssemblyFromFile(parameters, "InjectedCode.cs.txt");
tôi tạo ra các DLL để kiểm tra mã IL được tạo ra. Tôi có thể gỡ lỗi mã trong VS. Nhưng khi tôi chạy vùng phủ sóng, lắp ráp được tạo ra chỉ đơn giản là bỏ qua, nếu tôi sử dụng thư mục TEMP, hoặc nếu tôi xuất DLL (như trên) NO FILE được bao gồm trong vùng phủ sóng (vì vậy thậm chí không lắp ráp chính).
Khi tôi chạy hồ sơ, tôi chỉ có thể thấy lời gọi (phản chiếu), nhưng không có gì về mã được tạo. Khi tôi phân tích (tôi có một số lỗi trong mã được tiêm, ví dụ: không được sử dụng địa phương và phân tích ofc cho mọi thứ), không có sự cố nào được báo cáo từ mã được tiêm. Mã được tiêm:
namespace CodeInjection
{
public static class DynConcatenateString
{
public static string Concatenate(string s1, string s2){
// System.Diagnostics.Debugger.Break(); // break here for debugger and also test comment output
int a = 1+2+3+4+5; // complicated math
int b = a+2;
int c = 0;
return s1 + " !"+b+"! " + s2;
}
}
}
Tôi muốn sử dụng bảo hiểm, lược tả và phân tích về mã được tạo (chủ yếu là mức độ phù hợp).
Cũng bị bỏ qua (là lần thử đầu tiên của tôi sau khi mã bị bỏ qua). Ngoài ra jetbrains bao gồm và các công cụ khác bỏ lỡ. Bây giờ tôi sẽ đi sâu hơn trong chủ đề, hy vọng với kết quả trong tuần tới, vì vậy tôi sẽ gửi ở đây. Vui lòng đánh giá câu hỏi của tôi, cho dù bạn cho rằng nó hữu ích hay không. – cseppento