2010-12-05 4 views
2

J'instancie automatiquement les éléments de projet Visual Studio via le modèle objet. Dans certains fichiers, j'ai besoin de faire des remplacements de texte. Quelle est la meilleure approche pour effectuer des remplacements de texte sur le contenu d'un élément de projet (un fichier xml par exemple) en utilisant le modèle objet, Visual Stuido prend donc en charge l'action de contrôle de source requise. Je préfère ne pas ouvrir le fichier dans l'éditeur, et faire des remplacements de texte à travers le modèle d'objet éditeur.Visual Studio 2010: Remplacement de texte dans un élément de projet via l'automatisation

Répondre

0

Utilisez la méthode TextDocument.ReplacePattern. Vous pouvez obtenir l'objet TextDocument de l'objet ProjectItem comme ceci:

DirectCast(ProjectItem.Document.Object, TextDocument) 

Le code complet est comme suit:

Dim pi As ProjectItem = ... 
Dim win As EnvDTE.Window = Nothing 
If Not pi.IsOpen Then 
    win = pi.Open(Constants.vsViewKindPrimary) 
    'uncomment the following line if you want to show opened document 
    'win.Visible=True 
End If 
Dim td As TextDocument = DirectCast(pi.Document.Object, TextDocument) 
td.ReplacePattern("abc", "def") 
If Not win Is Nothing Then 
    win.Close(vsSaveChanges.vsSaveChangesYes) 
End If 
+0

que cette approche ouvre le document dans l'éditeur? –

+0

Non. En fait, si le document n'est pas ouvert dans l'éditeur, la méthode ReplacePattern lève une exception. Vous devez ouvrir le document de manière invisible en arrière-plan, effectuer le remplacement, puis fermer le document en mode silencieux. Le code dans VB .NEt est comme suit: –

+0

J'ai mis à jour ma réponse avec le code. –

Questions connexes