Ho un progetto demo, che crea un assembly e lo utilizza. Posso anche eseguire il debug del codice iniettato. Ma se eseguo la copertura, l'analisi o la profilazione, viene contato, ma voglio misurarlo.Copertura del codice, analisi e profilazione per il codice generato dinamicamente
Codice:
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");
creo la DLL per controllare il codice IL generato. Posso eseguire il debug del codice in VS. Ma quando eseguo la copertura, l'assembly generato viene semplicemente perso, se utilizzo la directory TEMP o se emetto la DLL (come sopra) NESSUN FILE è incluso nella copertura (quindi nemmeno l'assembly principale).
Quando eseguo il profilo, posso solo vedere il richiamo (riflessione), ma nulla sul codice generato. Quando eseguo l'analisi (ho alcuni errori nel codice iniettato, ad esempio, i locali non utilizzati e l'analisi ofc per tutto), non vengono segnalati problemi dal codice inserito. Il codice iniettato:
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;
}
}
}
desidero utilizzare copertura, profili e analisi sul codice generato (soprattutto coperture).
Anche saltato (era il mio primo tentativo dopo la copertura del codice saltato). Anche la copertura dei jetbrain e altri strumenti mancano. Ora approfondirò l'argomento, si spera con risultati nella prossima settimana, quindi invierò qui. Si prega di valutare la mia domanda, se pensi che sia utile o meno. – cseppento