2009-07-21 8 views
0

J'essaie d'automatiser la génération et le nettoyage des classes partielles créées à l'aide du XSD du framework .net. Mon problème principal est que [System.Diagnostics.DebuggerStepThroughAttribute()] affecte le code dans ma classe partielle aussi bien que le code généré automatiquement. Je peux supprimer l'attribut offensant dans le même fichier batch que j'utilise pour créer les fichiers.Appliquer l'attribut aux méthodes get/set de la propriété via le fichier batch

Cependant, je ne veux pas entrer dans toutes les propriétés du fichier générées automatiquement. Je peux empêcher le débogueur d'entrer chaque propriété en appliquant [System.Diagnostics.DebuggerStepThrough()] aux méthodes get et set. Puis-je le faire via un fichier batch? sans avoir besoin d'installer/configurer un langage de script tiers pour faire le traitement de texte?

Exemple propriété avec des attributs ajouté:

public string FileFormatVersion 
{ 
    [System.Diagnostics.DebuggerStepThrough()] 
    get { 
    return this.fileFormatVersionField; 
    } 
    [System.Diagnostics.DebuggerStepThrough()] 
    set 
    { 
     this.fileFormatVersionField = value; 
    } 
} 

Lien vers la suppression de lignes via un fichier batch (première partie du nettoyage nécessaire) Delete certain lines in a txt file via a batch file

+0

Attendez, ai-je mal compris? Quelqu'un a ajouté un lien pour supprimer des lignes d'un fichier batch, mais il m'a semblé que vous vouliez les ajouter aux getters et setters ... – JimG

+0

Non. Le lien était à moi, et comment faire la 1ère étape du processus de nettoyage. J'ai ajouté un edit pour clarifier son intention. Les autres personnes éditent juste pour ajuster le formatage. –

Répondre

1
setlocal enabledelayedexpansion 
set outfile=%1.copy 
del "%outfile%" 
for /f "delims=" %%x in (%1) do (
    set line=%%x 
    if "!line: =!"=="get{" (
     echo [System.Diagnostics.DebuggerStepThrough^(^)]>>%outfile% 
    ) 
    if "!line: =!"=="set{" (
     echo [System.Diagnostics.DebuggerStepThrough^(^)]>>%outfile% 
    ) 
    echo.%%x>>%outfile% 
) 

Ceci est simpliste et ne gérera pas les cas comme les propriétés qui ont déjà l'attribut ajouté. Il pourrait aussi s'étouffer sur certaines lignes de code, mais je n'ai pas encore trouvé de ligne. [Modifier] Apportez les modifications mentionnées ci-dessous, à l'exception de l'indentation d'écho supplémentaire (serait juste moche sur cette page).

+0

La sortie de l'outil XSD est très circonscrite en format, donc j'ai pu me passer de deux de vos cas. J'ai ajouté 12 espaces dans les échos pour mettre correctement en retrait les attributs, et j'ai modifié le dernier écho pour qu'il affiche correctement les lignes vides au lieu du texte "ECHO est activé". –

+0

Ma version révisée de votre fichier de commandes (puisque je n'ai pas le représentant pour éditer votre publication directement). ENABLEDELAYEDEXPANSION setlocal fixé outfile =% 1.Xsd.cs del "% outfile%" pour/f "delims =" %% x dans (% 1.Xsd.cs.temp) faire ( set line =% % x si "! line: =!" == "get {" ( echo [System.Diagnostics.DebuggerStepThrough^(^)] >>% Fichier de sortie% ) si "! line: =!" == " ensemble { »( écho [System.Diagnostics.DebuggerStepThrough^(^)] >>% outfile% ) écho. %% x >>% outfile% ) –

+0

ugh, qui est sorti beaucoup moins lisible que je voulais. –

0

Je sais que vous souhaitez utiliser un .bat fichier mais je pense vraiment que python ou un autre langage de script est votre meilleur pari ici.

+0

Si c'était la seule option peut-être, mais en ajoutant un outil supplémentaire au processus de développement pour une tâche de priorité tertiaire est un peu de sur-mesure quand il n'est pas nécessaire IMO. –

Questions connexes