2010-04-14 11 views
1

J'ai commencé à déconner avec la visionneuse DGML dans VS 2010 (ce qui semble génial). Je sais que vous pouvez créer des diagrammes à partir de votre base de code.Visionneuse DGML dans VS 2010

Existe-t-il un support pour la création d'un graphe orienté à partir de ce que je veux, ou est-ce simplement un outil d'analyse de code? Je voudrais quelque chose du genre «Ajouter un nœud» ou quelque chose comme ça.

Répondre

1

Vous devez générer le graphique manuellement. Pour autant que je sache, il n'y a pas d'outils visuels pour modifier sa structure à ce niveau.

Si vous faites un clic droit dans l'espace blanc, vous pouvez sélectionner Afficher DGML qui vous montrera le fichier XML source et le modifiera. Lorsque vous connaissez la structure, vous pouvez aussi générer le graphique automatiquement à partir de votre code en créant simplement un fichier XML avec une structure appropriée. Tout ce que vous devez définir est la section Liens. Vous pouvez aussi définir la section Nodes si vous souhaitez avoir de beaux noms dans le graphique.

Voici un exemple de comment vous pouvez le faire. Ce sont des moyens plus efficaces de le faire, mais celui-ci est facile à comprendre.

 XmlWriter xmlWriter = XmlWriter.Create(outputFile, new XmlWriterSettings() { Encoding = Encoding.UTF8 }); 
     xmlWriter.WriteStartDocument(); 
     xmlWriter.WriteStartElement("DirectedGraph", "http://schemas.microsoft.com/vs/2009/dgml"); 
     xmlWriter.WriteStartElement("Nodes"); 
     // dump nodes 
     foreach (Name n in Names) 
     { 
      xmlWriter.WriteStartElement("Node"); 
      xmlWriter.WriteAttributeString("Id", n.Id); // id is an unique identifier of the node 
      xmlWriter.WriteAttributeString("Label", n.Label); // label is the text on the node you see in the graph 
      xmlWriter.WriteEndElement(); 
     } 
     xmlWriter.WriteEndElement(); 
     xmlWriter.WriteStartElement("Links"); 
     // dump links 
     foreach (Link l in Links) 
     { 
      xmlWriter.WriteStartElement("Link"); 
      xmlWriter.WriteAttributeString("Source", l.Source); // ID! of the source node 
      xmlWriter.WriteAttributeString("Target", l.Target); // ID of the target node 
      xmlWriter.WriteEndElement(); 
     } 
     xmlWriter.WriteEndElement(); 
     xmlWriter.WriteEndElement(); 
     xmlWriter.WriteEndDocument(); 
     xmlWriter.Close(); 

c'est tout ce que vous devez faire .. si vous ne voulez pas un groupement ou une coloration .. qui ajouterait un peu plus de code ...