2009-10-12 10 views
1

Pas tout à fait la même chose que this thread, mais assez proche.Numéro de ligne pour Exception levée dans le code DotNET compilé à l'exécution

Mon programme permet aux gens d'entrer du code VB ou C# qui est compilé, chargé et exécuté à l'exécution. Mes CompilerParams sont:

CompilerParameters params = new CompilerParameters(); 
params.GenerateExecutable = false; 
params.GenerateInMemory = true; 
params.IncludeDebugInformation = false; 
params.TreatWarningsAsErrors = false; 
params.WarningLevel = 4; 

Lorsque ce code renvoie une exception que je voudrais être en mesure d'afficher une boîte de message qui permet aux utilisateurs de déboguer leur code. Le message d'exception est facile, mais le numéro de ligne est l'endroit où je me suis retrouvé coincé.

Je suppose que pour obtenir le numéro de ligne, il se peut que je doive modifier radicalement les paramètres du compilateur et peut-être même la façon dont ces fichiers sont stockés/chargés.

Quelqu'un connaît-il les moindres étapes nécessaires pour que cela fonctionne?

Répondre

2

mis OutputAssembly à un fichier temporaire, définissez GenerateInMemory = false, IncludeDebugInformation = true
Cela devrait générer des symboles et vous permettent d'obtenir une trace complète de la pile avec des lignes de code

+0

Merci Tom, j'avais peur que c'était la réponse . Maintenant, je dois trouver un moyen de supprimer tous ces fichiers dll et pdb * après * mon application se ferme ... Des idées là-dessus? –

+1

il suffit de les créer dans le répertoire Windows Temp afin que windows prenne soin de lui: Path.GetTempFileName() – TJF

+0

C'est là que je les ai mis, mais ce dossier est proche de 1 Gig sur ma machine, si quelqu'un s'en occupe ils sont faire un travail bâclé ... –

Questions connexes