Y at-il #pragma ou directive similaire pour le code C # généré pour correspondre les numéros de ligne de code de modèle à C # Numéro de ligne?

StackOverflow https://stackoverflow.com/questions/1358487

Question

J'ai un système de modèles qui ressemble à l'ancien style code ASP. Je lance cela par une classe qui réécrit la chose entière dans le code source C #, compile et exécute finalement.

Ce que je me demande est s'il y a une sorte de directive # pragma-que je peux saupoudrer le code C # généré avec qui fera compilent les erreurs correspondent aux numéros de ligne dans mon fichier de modèle?

Par exemple, disons que j'ai cette première et seule ligne dans mon code de modèle:

Object o = datta; // should be data, compiler error

mais pour compiler ce que je dois ajouter un espace de noms, une classe, une méthode et un code-plaque de la chaudière, donc cette ligne ci-dessus, qui est la ligne n ° 1 dans mon fichier de modèle, se termine réellement être la ligne n ° 17 (numéro aléatoire, à des fins d'illustration) dans le code C #. L'erreur du compilateur signaleront naturellement mon erreur comme sur la ligne n ° 17, et non sur la ligne n ° 1.

Je me souviens d'un autre langage de programmation que je l'ai utilisé avant (bien que je ne me souviens pas que l'on) qu'il avait une directive que je pourrais ajouter, ce qui rendrait les numéros de ligne d'erreur ligne vers le haut.

Y at-il une telle chose en C # 3.5?

Était-ce utile?

La solution

Vous avez le #line préprocesseur directive .

  

#line vous permet de modifier le numéro de ligne du compilateur et (éventuellement) la sortie de nom de fichier pour les erreurs et les avertissements.

     

peut être utilisé #line directive dans une étape intermédiaire automatisé, dans le processus de construction. Par exemple, si les lignes ont été supprimées du fichier de code source original, mais vous voulez toujours le compilateur de générer une sortie en fonction de la ligne d'origine numérotation dans le fichier, vous pouvez supprimer des lignes, puis simuler la ligne originale de numérotation avec #line.

     

La directive #line hidden masque les lignes successives du débogueur, de telle sorte que lorsque les étapes de développement dans le code, les lignes entre un #line hidden et la directive suivante #line (en supposant qu'il n'y a pas un autre #line directive cachée) sera enjamba. Cette option peut également être utilisée pour permettre de différencier ASP.NET définie par l'utilisateur et le code généré par la machine. Bien que ASP.NET est le principal consommateur de cette fonction, il est probable que plusieurs générateurs de sources feront usage.

     

#line hidden directive ne modifie pas les noms de fichiers ou les numéros de ligne dans les rapports d'erreur. Ainsi, si une erreur est rencontrée dans un bloc caché, le compilateur signale le nom du fichier en cours et le numéro de ligne de l'erreur.

     

La directive #line filename spécifie le nom de fichier que vous souhaitez apparaître dans la sortie du compilateur. Par défaut, le nom réel du fichier de code source est utilisé. Le nom du fichier doit être entre guillemets ( « ») et doit être précédé d'un numéro de ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top