您的位置:首页 > 其它

Getting rid of the DSL model explorer

2014-01-14 10:16 429 查看

Every DSL you create with DSL Tools has a model explorer. This model explorer is a tool window in Visual Studio displaying the elements of your model in a hierarchical
way. This is often a nice feature but sometimes a hierarchical view of your data is not appropriate. So I came to the question:
How to remove the explorer from the generated code?

I could not find any option in the DSL design to remove the model explorer, but if you look at some of the .tt files you will find
somewhere a query for this.Dsl.Explorer != null. For example in the
package.tt file that generates the
package.cs which is responsible for registering the tool window for the model explorer:
<#
if(this.Dsl.Explorer != null)
{
#>
[VSShell::ProvideToolWindow( typeof(<#=
dslName #>ExplorerToolWindow), MultiInstances = false, Style = VSShell::VsDockStyle.Tabbed, Orientation = VSShell::ToolWindowOrientation.Right,
Window = "{3AE79031-E1BC-11D0-8F78-00A0C9110057}")]
[VSShell::ProvideToolWindowVisibility( typeof(<#=
dslName #>ExplorerToolWindow), Constants.<#=
dslName #>EditorFactoryId)]
<#
}
#>
Even if I did not find any option to set the
Dsl.Explorer property of the model to
null (you did not see the Explorer property anywhere in the DSL diagram) it seems that the developers of the DSL Tools had this use case in mind.
To remove the
Dsl.Explorer from your DSL model open the
.dsl file with a text editor and go to the end. There you will find some XML tags like the following:
<Explorer
ExplorerGuid="6c276297-6acd-4e9a-8740-b61ba834004b"
Title="HardwareDescription Explorer">
<ExplorerBehaviorMoniker
Name="HardwareDescription/HardwareDescriptionExplorer"
/>
</Explorer>
Just delete these three lines and generate your code once again. Maybe you should reset your Experimental Hive, too.
I tested a DSL with a removed Model Explorer without any problems. It seems the developers of the DSL Tools did a very good job
on the code generation templates . The generated ModelExplorer.cs file contains only a single line:
// This source file is empty because this DSL does not define a model explorer.
That should be a good proof that a DSL can run without the model explorer even if it might be not supported by the DSL Tools.



作者:明年我18

出处:http://www.cnblogs.com/default

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: