HOW TO:讀取程式碼中的 UML 模型
您可以使用 UML API,來載入 UML 模型及其圖表。
讀取程式碼中的模型
若要存取模型的內容而不將其顯示於 Visual Studio 視窗中,請使用 ModelingProject.LoadReadOnly()。
例如:
using Microsoft.VisualStudio.Uml.Classes;
// for IElement
using Microsoft.VisualStudio.ArchitectureTools.Extensibility;
// for ModelingProject
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
// for IModelStore
...
string projectPath = @"C:\MyProjectFolder\MyProject.modelproj";
using (IModelingProjectReader projectReader =
ModelingProject.LoadReadOnly(projectPath))
{
IModelStore store = projectReader.Store;
foreach (IClass umlClass in store.AllInstances<IClass>())
{
...
}
}
如果您要讀取圖表中的圖案,您必須先讀取專案,再讀取圖表。
例如:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Presentation;
// for IDiagram
...
foreach (string diagramFile in projectReader. DiagramFileNames)
{
IDiagram diagram = projectReader.LoadDiagram(diagramFile);
foreach (IShape<IElement> shape
in diagram.GetChildShapes<IElement>())
{ ... }
}
替代方法
就許多應用程式而言,Visual Studio Modelbus 都可讓您在參考模型及其內含之項目時,享有比本主題中說明的方法更為優異的健全性和彈性。它可提供在任意項目間相互連結的標準方法 (在相同或不同模型中)。如需詳細資訊,請參閱HOW TO:整合 UML 模型與其他模型和工具。
您也可以使用 Visual Studio API,在使用者介面中開啟模型和圖表。如需詳細資訊,請參閱HOW TO:使用 Visual Studio API 開啟 UML 模型。
獨立應用程式
上一節中的範例可在 Visual Studio 擴充功能中運作。您可以讀取獨立應用程式中的模型,但您必須在 Visual Studio 專案中加入參考。
注意事項 |
---|
在新版產品中,有關如何讀取獨立應用程式之模型的詳細資訊可能會有所變更。某些在目前版本中可存取的功能,在未來的版本中可能無法使用。 |
若要加入參考以讀取獨立應用程式中的模型:
在 [方案總管] 中,以滑鼠右鍵按一下建置應用程式的專案,然後按一下 [屬性]。在屬性編輯器中,將 [應用程式] 索引標籤中的 [目標 Framework] 設為 .NET Framework 4。
加入您存取 UML 模型所需的 .NET 參考,通常為:
Microsoft.VisualStudio.Uml.Interfaces.dll
Microsoft.VisualStudio.ArchitectureTools.Extensibility.dll
除了前幾節所列的參考以外,請從 \Program Files\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies 加入下列專案參考:
Microsoft.VisualStudio.Uml.dll
Microsoft.VisualStudio.TeamArchitect.ModelStore.Dsl.dll
如果您要讀取應用程式中的圖表,則還需要下列參考:
Microsoft.VisualStudio.TeamArchitect.ActivityDesigner.Dsl.dll
Microsoft.VisualStudio.TeamArchitect.ComponentDesigner.Dsl.dll
Microsoft.VisualStudio.TeamArchitect.LogicalClassDesigner.Dsl.dll
Microsoft.VisualStudio.TeamArchitect.SequenceDesigner.Dsl.dll
Microsoft.VisualStudio.TeamArchitect.UseCase.Dsl.dll