index > Visual Studio Team System - Domain-Specific Language Tools > Generating Code From a Model Walkthrough

Generating Code From a Model Walkthrough


I'm going through some of the walkthroughs today. I was not sure what to do after step 14. "Copy and paste the following XML into the file, and then save it." I used the "Copy Code" link button to copy the code from the web site.

Apparently the next step is to add a new text file to the project and name it "DomainModel.tt", but this is not clear. I did that and completed the other steps.

When I save the ".tt" files, I see the following error message.

"Running transformation: Dsl ExampleModel has no Editor."

When I open the .cs file all I see is "ErrorGeneratingOutput".

I am using the Sept. 2006 RTM version of DSL Tools. Other walkthrough, such as Creating and Customizing the Domain-Specific Definition have worked exactly as described. I am reading the walkthrough off of MSDN online. What else do I need to do to get this walkthrough to generate code?

Delmer Johnson




Delmer Johnson
Delmer Johnson

Delmer--

You are right about the first text belonging in DomainModel.tt. There also is a problem in the supplied XML that should be pasted in as library.dsl. A corrected version is included below.

Andy Bliven - Developer - DSL Tools & Software Factories Platform [MSFT]


<?xml version="1.0" encoding="utf-8"?>

<Dsl dslVersion="1.0.0.0" Id="e4dcf5e5-aefc-468e-8d66-07b2e50d7c96" Description="Description for Microsoft.Language25.Language25" Name="ExampleModel" DisplayName="ExampleModel" Namespace="ExampleNamespace" PackageGuid="00000000-0000-0000-0000-000000000000" PackageNamespace="ExampleNamespace" xmlns="http://schemas.microsoft.com/VisualStudio/2005/DslTools/DslDefinitionModel">

<Classes>

<DomainClass Id="eeb41517-6782-4ce3-bf8c-8f59a5f76998" Description="Description for ExampleNamespace.Library" Name="Library" DisplayName="Library" Namespace="ExampleNamespace">

<Properties>

<DomainProperty Id="fed0299c-1295-44e1-ba80-73d56d4e538f" Description="Description for ExampleNamespace.Library.Name" Name="Name" DisplayName="Name" DefaultValue="DefaultLibraryName" IsElementName="true">

<Type>

<ExternalTypeMoniker Name="/System/String" />

</Type>

</DomainProperty>

</Properties>

<ElementMergeDirectives>

<ElementMergeDirective>

<Index>

<DomainClassMoniker Name="Book" />

</Index>

<LinkCreationPaths>

<DomainPath>LibraryHasBooks.Books</DomainPath>

</LinkCreationPaths>

</ElementMergeDirective>

<ElementMergeDirective>

<Index>

<DomainClassMoniker Name="CirculationBook" />

</Index>

<LinkCreationPaths>

<DomainPath>LibraryHasCirculationBooks.CirculationBooks</DomainPath>

</LinkCreationPaths>

</ElementMergeDirective>

<ElementMergeDirective>

<Index>

<DomainClassMoniker Name="ReferenceBook" />

</Index>

<LinkCreationPaths>

<DomainPath>LibraryHasReferenceBooks.ReferenceBooks</DomainPath>

</LinkCreationPaths>

</ElementMergeDirective>

</ElementMergeDirectives>

</DomainClass>

<DomainClass Id="b5e76ed6-5a0e-4b15-a6e4-6694111b288d" Description="Description for ExampleNamespace.Book" Name="Book" DisplayName="Book" InheritanceModifier="Abstract" Namespace="ExampleNamespace" />

<DomainClass Id="eb9453cf-f7ae-448f-a2ed-64cf06e9b03f" Description="Description for ExampleNamespace.CirculationBook" Name="CirculationBook" DisplayName="Circulation Book" Namespace="ExampleNamespace" HasCustomConstructor="true" GeneratesDoubleDerived="true">

<BaseClass>

<DomainClassMoniker Name="Book" />

</BaseClass>

</DomainClass>

<DomainClass Id="451c5461-c9e0-4433-bd6b-9ca772b80d47" Description="Description for ExampleNamespace.ReferenceBook" Name="ReferenceBook" DisplayName="Reference Book" Namespace="ExampleNamespace">

<BaseClass>

<DomainClassMoniker Name="Book" />

</BaseClass>

</DomainClass>

<DomainClass Id="34a2607e-c302-4db2-814e-8800bc8554b5" Description="Description for ExampleNamespace.Person" Name="Person" DisplayName="Person" Namespace="ExampleNamespace" />

</Classes>

<Relationships>

<DomainRelationship Id="2d03a799-595d-4207-be7f-27e92ae9c6c2" Description="Description for ExampleNamespace.LibraryHasMembers" Name="LibraryHasMembers" DisplayName="Library Has Members" Namespace="ExampleNamespace" IsEmbedding="true">

<Properties>

<DomainProperty Id="e66ad025-9ca3-45a2-ba95-e331e4c3135e" Description="Description for ExampleNamespace.LibraryHasMembers.Amount Owed" Name="AmountOwed" DisplayName="Amount Owed" Kind="Calculated">

<Type>

<ExternalTypeMoniker Name="/System/Single" />

</Type>

</DomainProperty>

</Properties>

<Source>

<DomainRole Id="2368fd87-4369-4515-86f5-e8ab42f747ed" Description="Description for ExampleNamespace.LibraryHasMembers.Library" Name="Library" DisplayName="Library" PropertyName="Members" PropertyDisplayName="Members">

<RolePlayer>

<DomainClassMoniker Name="Library" />

</RolePlayer>

</DomainRole>

</Source>

<Target>

<DomainRole Id="51937e41-b8a6-4bc1-a25a-b5bc740cda13" Description="Description for ExampleNamespace.LibraryHasMembers.Member" Name="Member" DisplayName="Member" PropertyName="Library" Multiplicity="ZeroOne" PropagatesDelete="true" PropertyDisplayName="Library">

<RolePlayer>

<DomainClassMoniker Name="Person" />

</RolePlayer>

</DomainRole>

</Target>

</DomainRelationship>

<DomainRelationship Id="97bd065a-d3e7-4bc3-92b2-2632b4f22513" Description="Description for ExampleNamespace.LibraryHasBooks" Name="LibraryHasBooks" DisplayName="Library Has Books" Namespace="ExampleNamespace" IsEmbedding="true">

<Source>

<DomainRole Id="8cb3e691-30e9-4517-bbfa-d62457829047" Description="Description for ExampleNamespace.LibraryHasBooks.Library" Name="Library" DisplayName="Library" PropertyName="Books" PropertyDisplayName="Books">

<RolePlayer>

<DomainClassMoniker Name="Library" />

</RolePlayer>

</DomainRole>

</Source>

<Target>

<DomainRole Id="eec1832e-89d4-4e89-a883-c78d9f3dacca" Description="Description for ExampleNamespace.LibraryHasBooks.Book" Name="Book" DisplayName="Book" PropertyName="Library" Multiplicity="One" PropagatesDelete="true" PropagatesCopy="true" PropertyDisplayName="Library">

<RolePlayer>

<DomainClassMoniker Name="Book" />

</RolePlayer>

</DomainRole>

</Target>

</DomainRelationship>

<DomainRelationship Id="7e298837-9aea-4986-91cb-1bd5e047c929" Description="Description for ExampleNamespace.LibraryHasCirculationBooks" Name="LibraryHasCirculationBooks" DisplayName="Library Has Circulation Books" Namespace="ExampleNamespace" IsEmbedding="true">

<BaseRelationship>

<DomainRelationshipMoniker Name="LibraryHasBooks" />

</BaseRelationship>

<Source>

<DomainRole Id="80bfb4c1-0f60-4d93-9d1c-c4c05bd7e7db" Description="Description for ExampleNamespace.LibraryHasCirculationBooks.Library" Name="Library" DisplayName="Library" PropertyName="CirculationBooks" PropertyDisplayName="Circulation Books">

<RolePlayer>

<DomainClassMoniker Name="Library" />

</RolePlayer>

</DomainRole>

</Source>

<Target>

<DomainRole Id="c693072d-e872-4fde-a6f0-8e83179f0ceb" Description="Description for ExampleNamespace.LibraryHasCirculationBooks.CirculationBook" Name="CirculationBook" DisplayName="Circulation Book" PropertyName="Library" Multiplicity="One" PropagatesDelete="true" PropagatesCopy="true" PropertyDisplayName="Library">

<RolePlayer>

<DomainClassMoniker Name="CirculationBook" />

</RolePlayer>

</DomainRole>

</Target>

</DomainRelationship>

<DomainRelationship Id="2cb6e0f4-8f33-4349-8075-2628a9521e16" Description="Description for ExampleNamespace.LibraryHasReferenceBooks" Name="LibraryHasReferenceBooks" DisplayName="Library Has Reference Books" Namespace="ExampleNamespace" IsEmbedding="true">

<BaseRelationship>

<DomainRelationshipMoniker Name="LibraryHasBooks" />

</BaseRelationship>

<Source>

<DomainRole Id="71475276-1a94-48ed-aca3-4a37a5e06645" Description="Description for ExampleNamespace.LibraryHasReferenceBooks.Library" Name="Library" DisplayName="Library" PropertyName="ReferenceBooks" PropertyDisplayName="Reference Books">

<RolePlayer>

<DomainClassMoniker Name="Library" />

</RolePlayer>

</DomainRole>

</Source>

<Target>

<DomainRole Id="e5ce0a75-6b17-4b21-aa85-f4315e43088a" Description="Description for ExampleNamespace.LibraryHasReferenceBooks.ReferenceBook" Name="ReferenceBook" DisplayName="Reference Book" PropertyName="Library" Multiplicity="One" PropagatesDelete="true" PropagatesCopy="true" PropertyDisplayName="Library">

<RolePlayer>

<DomainClassMoniker Name="ReferenceBook" />

</RolePlayer>

</DomainRole>

</Target>

</DomainRelationship>

<D&#0;mainRelationship Id="c3ad950d-5db8-4362-bc71-4fd2e494a65e" Description="Description for ExampleNamespace.PersonChecksOutCirculationBooks" Name="PersonChecksOutCirculationBooks" DisplayName="Person Checks Out Circulation Books" Namespace="ExampleNamespace">

<Properties>

<DomainProperty Id="ed46a26c-f6f4-4402-b814-4e26f73d2a15" Description="Description for ExampleNamespace.PersonChecksOutCirculationBooks.Due Date" Name="DueDate" DisplayName="Due Date" Kind="CustomStorage">

<Type>

<ExternalTypeMoniker Name="/System/DateTime" />

</Type>

</DomainProperty>

</Properties>

<Source>

<DomainRole Id="8860946b-d755-47c6-82ed-26600c08b6bb" Description="Description for ExampleNamespace.PersonChecksOutCirculationBooks.Person" Name="Person" DisplayName="Person" PropertyName="CirculationBooks" PropertyDisplayName="Circulation Books">

<RolePlayer>

<DomainClassMoniker Name="Person" />

</RolePlayer>

</DomainRole>

</Source>

<Target>

<DomainRole Id="f7afeca0-9165-44fc-93c8-167160b26ae3" Description="Description for ExampleNamespace.PersonChecksOutCirculationBooks.CirculationBook" Name="CirculationBook" DisplayName="Circulation Book" PropertyName="Person" Multiplicity="ZeroOne" PropertyDisplayName="Person">

<RolePlayer>

<DomainClassMoniker Name="CirculationBook" />

</RolePlayer>

</DomainRole>

</Target>

</DomainRelationship>

</Relationships>

<Types>

<ExternalType Name="DateTime" Namespace="System" />

<ExternalType Name="String" Namespace="System" />

<ExternalType Name="Int16" Namespace="System" />

<ExternalType Name="Int32" Namespace="System" />

<ExternalType Name="Int64" Namespace="System" />

<ExternalType Name="UInt16" Namespace="System" />

<ExternalType Name="UInt32" Namespace="System" />

<ExternalType Name="UInt64" Namespace="System" />

<ExternalType Name="SByte" Namespace="System" />

<ExternalType Name="Byte" Namespace="System" />

<ExternalType Name="Double" Namespace="System" />

<ExternalType Name="Single" Namespace="System" />

<ExternalType Name="Guid" Namespace="System" />

<ExternalType Name="Boolean" Namespace="System" />

<ExternalType Name="Char" Namespace="System" />

</Types>

<XmlSerializationBehavior Name="ExampleModelSerializationBehavior" Namespace="ExampleNamespace">

<ClassData>

<XmlClassData TypeName="Library" MonikerAttributeName="" MonikerElementName="libraryMoniker" ElementName="library" MonikerTypeName="LibraryMoniker">

<DomainClassMoniker Name="Library" />

<ElementData>

<XmlPropertyData XmlName="name" IsMonikerKey="true">

<DomainPropertyMoniker Name="Library/Name" />

</XmlPropertyData>

<XmlRelationshipData UseFullForm="true" RoleElementName="members">

<DomainRelationshipMoniker Name="LibraryHasMembers" />

</XmlRelationshipData>

<XmlRelationshipData RoleElementName="books">

<DomainRelationshipMoniker Name="LibraryHasBooks" />

</XmlRelationshipData>

<XmlRelationshipData UseFullForm="true" RoleElementName="circulationBooks">

<DomainRelationshipMoniker Name="LibraryHasCirculationBooks" />

</XmlRelationshipData>

<XmlRelationshipData UseFullForm="true" RoleElementName="referenceBooks">

<DomainRelationshipMoniker Name="LibraryHasReferenceBooks" />

</XmlRelationshipData>

</ElementData>

</XmlClassData>

<XmlClassData TypeName="Book" MonikerAttributeName="" MonikerElementName="bookMoniker" ElementName="book" MonikerTypeName="BookMoniker">

<DomainClassMoniker Name="Book" />

</XmlClassData>

<XmlClassData TypeName="CirculationBook" MonikerAttributeName="" SerializeId="true" MonikerElementName="circulationBookMoniker" ElementName="circulationBook" MonikerTypeName="CirculationBookMoniker">

<Doma&#0;nClassMoniker Name="CirculationBook" />

</XmlClassData>

<XmlClassData TypeName="ReferenceBook" MonikerAttributeName="" MonikerElementName="referenceBookMoniker" ElementName="referenceBook" MonikerTypeName="ReferenceBookMoniker">

<DomainClassMoniker Name="ReferenceBook" />

</XmlClassData>

<XmlClassData TypeName="Person" MonikerAttributeName="" SerializeId="true" MonikerElementName="personMoniker" ElementName="person" MonikerTypeName="PersonMoniker">

<DomainClassMoniker Name="Person" />

<ElementData>

<XmlRelationshipData UseFullForm="true" RoleElementName="circulationBooks">

<DomainRelationshipMoniker Name="PersonChecksOutCirculationBooks" />

</XmlRelationshipData>

</ElementData>

</XmlClassData>

<XmlClassData TypeName="LibraryHasMembers" MonikerAttributeName="" MonikerElementName="libraryHasMembersMoniker" ElementName="libraryHasMembers" MonikerTypeName="LibraryHasMembersMoniker">

<DomainRelationshipMoniker Name="LibraryHasMembers" />

<ElementData>

<XmlPropertyData XmlName="amountOwed" Representation="Ignore">

<DomainPropertyMoniker Name="LibraryHasMembers/AmountOwed" />

</XmlPropertyData>

</ElementData>

</XmlClassData>

<XmlClassData TypeName="LibraryHasBooks" MonikerAttributeName="" MonikerElementName="libraryHasBooksMoniker" ElementName="libraryHasBooks" MonikerTypeName="LibraryHasBooksMoniker">

<DomainRelationshipMoniker Name="LibraryHasBooks" />

</XmlClassData>

<XmlClassData TypeName="LibraryHasCirculationBooks" MonikerAttributeName="" MonikerElementName="libraryHasCirculationBooksMoniker" ElementName="libraryHasCirculationBooks" MonikerTypeName="LibraryHasCirculationBooksMoniker">

<DomainRelationshipMoniker Name="LibraryHasCirculationBooks" />

</XmlClassData>

<XmlClassData TypeName="LibraryHasReferenceBooks" MonikerAttributeName="" MonikerElementName="libraryHasReferenceBooksMoniker" ElementName="libraryHasReferenceBooks" MonikerTypeName="LibraryHasReferenceBooksMoniker">

<DomainRelationshipMoniker Name="LibraryHasReferenceBooks" />

</XmlClassData>

<XmlClassData TypeName="PersonChecksOutCirculationBooks" MonikerAttributeName="" MonikerElementName="personChecksOutCirculationBooksMoniker" ElementName="personChecksOutCirculationBooks" MonikerTypeName="PersonChecksOutCirculationBooksMoniker">

<DomainRelationshipMoniker Name="PersonChecksOutCirculationBooks" />

<ElementData>

<XmlPropertyData XmlName="dueDate">

<DomainPropertyMoniker Name="PersonChecksOutCirculationBooks/DueDate" />

</XmlPropertyData>

</ElementData>

</XmlClassData>

<XmlClassData TypeName="LibraryDiagram" MonikerAttributeName="" MonikerElementName="minimalLanguageDiagramMoniker" ElementName="minimalLanguageDiagram" MonikerTypeName="LibraryDiagramMoniker">

<DiagramMoniker Name="LibraryDiagram" />

</XmlClassData>

</ClassData>

</XmlSerializationBehavior>

<ExplorerBehavior Name="LibraryExplorer" />

<ConnectionBuilders>

<ConnectionBuilder Name="PersonChecksOutCirculationBooksBuilder">

<LinkConnectDirective>

<DomainRelationshipMoniker Name="PersonChecksOutCirculationBooks" />

<SourceDirectives>

<RolePlayerConnectDirective>

<AcceptingClass>

<DomainClassMoniker Name="Person" />

</AcceptingClass>

</RolePlayerConnectDirective>

</SourceDirectives>

<TargetDirectives>

<RolePlayerConnectDirective>

<AcceptingClass>

<DomainClassMoniker Name="CirculationBook" />

</AcceptingClass>

</RolePlayerConnectDirective>

</TargetDirectives>

</LinkConnectDirective>

</ConnectionBuilder>

</ConnectionBuilders>

<Diagram Id="2b61d4f9-d7e8-4aa6-a889-d553a28eddfc" Description="Description for ExampleNamespace.LibraryDiagram" Name="Librar&#0;Diagram" DisplayName="Minimal Language Diagram" Namespace="ExampleNamespace">

<Class>

<DomainClassMoniker Name="Library" />

</Class>

</Diagram>

<Designer FileExtension="ex1" EditorGuid="a642b50b-9479-41b0-9268-69cf1d5871b0">

<RootClass>

<DomainClassMoniker Name="Library" />

</RootClass>

<XmlSerializationDefinition CustomPostLoad="false">

<XmlSerializationBehaviorMoniker Name="ExampleModelSerializationBehavior" />

</XmlSerializationDefinition>

<Validation UsesMenu="false" UsesOpen="false" UsesSave="false" UsesLoad="false" />

<DiagramMoniker Name="LibraryDiagram" />

</Designer>

<Explorer ExplorerGuid="0eff263d-2177-4ad7-b632-d65da83e39cf" Title="experiment1 Explorer">

<ExplorerBehaviorMoniker Name="ExampleModel/LibraryExplorer" />

</Explorer>

</Dsl>




Developer on the Visual Studio Team Architect product
Andrew Bliven
Thanks for the reply! It worked. There were a couple of odd things that showed up as errors in Intellisense (for example "D&#0;mainRelationship" and "Librar&#0;Diagram"), but were very easy to correct.


Delmer Johnson
Delmer Johnson
reply 3

You can use google to search for other answers

 

More Articles

ROM for developing a Use Case cartoon in VS2005
Reminder Web Chat this Tuesday
Problem with List type value property
CTC Problem
Setting the default expanded state for a compartment
Preventing model elements from being deleted
Custom connect code not getting called
VS SDK March 2006/ DSL TOOLS - Problem to build
Administrator priviliges required
Jochen Seemann's presentation on PDC05
Welcome to Bokebb   New Update   Joins the collection  
 

New Articles

DSL Tools support for Visual Studio edit…
Generate a Domain Model during Debugging
connectors between elements of a compart…
Mouse click in the Domain-Specific Langu…
Setup & life cycle
Multiple DSL's using the same file exten…
Compartiment with multiple classes to be…
How access to a connector property
Licensing & pricing
Merging auto-generated code with custom …
DSL Tools November CTP now available
Not getting items in the toolbox in the …
changing defaults in inherited propeties
schedule for beta and V1 releases?
Crash of visual studio when model is inc…

Hot Articles

Label Editing (how to prevent)
How to change the font of a shape?
Problem Extending Notation with icons
How to intercept shape double-click event
Join the World's Largest Software Factor…
Inherited classes and their compartment …
Is there documentation for the T4 engine…
Manioulate shape text decorator at runti…
Package Load Failure Again
How to set formatting to the strings dis…
How can i force the placement of a port …
November DSL toolkit: how to add command…
DSL and visual studio
DMD -> DD
Shape inside a shape

Recommend Articles

Migrating between languages
How can I add existed DataBase scheme to…
Error creating DSL setup project (empty …
Outline Pen Width
Troubleshooting mysterious crashes
Moving DSL Project to another machine
Changing image displayed by image shape …
DMD -> DD
Migrating custom text transformation tem…
Language name has to start with capital …
How to categorize properties?
Problems with DSL Tools Version 1
Orchestration Features
DSL Tools November CTP and VS SDK Decemb…
How to make a Domain Relationship visibl…