2010-07-20 3 views
1

Scénario:vs2008 puis-je obtenir la valeur du numéro de ligne @ *?

J'ai récemment appris DebugView utile de Mark Russinovich * utilitaire.
Avec DebugView, même avec VS2008 fermé, je peux utiliser des déclarations comme ceci:

System.Diagnostics.Debug.WriteLine("some text =. " + some_variable); 

Je souhaite modifier ce qui précède, au moment de la compilation, pour inclure le numéro de ligne de code source:

System.Diagnostics.Debug.WriteLine("nnnn: some text =. " + some_variable); 

où nnnn représente le numéro de ligne du code source. AFAIK, pour ce faire, vs2008 aurait besoin d'une forme de méta-variable comme @linenumber pour le numéro de ligne du code source de la compilation actuelle. à savoir, si l'instruction Debug.WriteLine
est sur la dixième ligne, alors une telle méta variable serait == 10.

Ainsi, une déclaration de débogage comme l'exemple grossier pourrait être utilisé ci-dessus en plusieurs endroits et il serait facile d'identifier l'emplacement du code source de chaque instruction de débogage.

QUESTION: sont là des variables méta qui peuvent être référencées à la compilation du temps?

P.S .: Je n'ai pas trouvé la réponse à cette question via Google et via la fonction de recherche SO.

+0

nous ne faisons pas les signatures ici, ou, « Bonjour », ou "Merci". C'est un site de questions et réponses, et nous n'avons pas de discussion. –

+0

FWIW, nouveau dans C# 5, .NET 4.5: http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.callerlinenumberattribute.aspx & http://msdn.microsoft.com/fr us/library/system.runtime.compilerservices.callerfilepathattribute.aspx & http://msdn.microsoft.com/fr-fr/library/system.runtime.compilerservices.callermembernameattribute.aspx ... pas exactement ce que je cherchais trois il y a des années; cependant utile au moins à moi. – gerryLowry

Répondre

0

Même si j'espère qu'il ya une méthode pour obtenir ces informations plus rapidement, voici une façon que vous pouvez obtenir le nom du fichier et le numéro de ligne en utilisant la classe StackTrace dans l'espace de noms System.Diagnostics:

StackTrace st = new StackTrace(new StackFrame(true)); 
string fileName = st.GetFrame(0).GetFileName(); 
string lineNumber = st.GetFrame(0).GetFileLineNumber().ToString(); 
string fileNameAndLineNbr = fileName + ":" + lineNumber; 

System.Diagnostics.Debug.WriteLine(fileNameAndLineNbr + ": some text =. " + some_variable); 
1

c'est la meilleure façon que je connaisse pour obtenir la ligne RÉEL CORRECTEMENT (il est la ligne droite parce qu'il est en ligne)

Debug.WriteLine(" hi there I am line number [" + (new StackTrace(new StackFrame(true)).GetFrame(0).GetFileLineNumber().ToString()) + "]"); 
Questions connexes