RSS 2.0 Feed
2005-01 Entries
摘要:在辛苦摸索完新文件模板后,居然发现在http://lab.msdn.microsoft.com/vs2005/发现介绍的文档,于是这篇就直接译了: 在VS2005中创建一个新的工程模板(译): 创建一个自定义工程模板的过程就是设计和开发一个工程和提供模板元数据的过程。定制工程模板要求以下元素:    1,元数据文件(*.vstemplate文件)是Visual Studio定义如何在开发环境显示该工程模板,以及通过指定属性来定制开发环境中,对应该模板的工程如何被创建。    2,工程文件或者Web.config文件    3,代码文件,如Windows forms,Web forms,类文件,资源文件所以的这些文件被压缩到一个独立的.ZIP文件中,该ZIP文件必须被放置在Visual Studio指定的定制工程模板目录下,定制的工程模板将被显示在对应语言的New Project(新建工程)对话框中。 要添加一个定制的工程模板到新建工程对话框中:1,创建一个工程2,创建一个xml文件以包含工程模板元数据,并将该文件以.vstemplate后缀保存3,适当的编辑代码文件,指名需要被参数替换的地方. 4,将所有文件压缩到一个ZIP文件中。注意:压缩文件中不能包含目录. Visual Studio不支持包含目录的模板.5,将ZIP文件放置到适当用户定制模板目录,例如:\My Documents\Visual Studio\ProjectTemplates\CSharp 下面的XML文件是一个基本的工程模板的.vstemplate文件,该模板包含一个.vstemplate文件,一个Visual C#Windows应用工程文件,一个窗体文件,以及一个图标文件。用于作为定制工程模板在新建工程对话框中显示的图。<VSTemplate Type="Project" Version="1.1.0">   <TemplateData>      <Name>         <String>MyWinApp</String>      </Name>      <Description>         <String>A windows user interface application</String>      </Description>      <Icon>         <FilePath>Sample.ico</FilePath>      </Icon>      <ProjectType>         <Languages>            <Language>CSharp</Language>         </Languages>      </ProjectType>      <DefaultName>MyWinApp</DefaultName></TemplateData><TemplateContent>      <ProjectFile>         <SourceFile>WindowsApplication.csproj</SourceFile>      </ProjectFile>      <ProjectContents>         <ProjectItem>            <SourceFile>Form1.cs</SourceFile>         </ProjectItem>         <ProjectItem>            <SourceFile>Form1.Designer.cs</SourceFile>         </ProjectItem>      </ProjectContents>   </TemplateContent></VSTemplate> 注意:同样不支持中文  ...[阅读全文]

posted @ | Feedback (7) |

摘要:VS2005文件模板的定制 首先编写你的文件模板的原型:简单地说,新建的文件将是你提供文件的副本,当然你的文件中可以包含一些关键字,这些关键字或在使用模板生成新文件时被开发环境所替换。我们可以参考系统提供的模板中,winform窗体代码文件的内容:#region Using directives using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; #endregion namespace $rootnamespace${ partial class $safeitemrootname$: Form {  public $safeitemrootname$()  {   InitializeComponent();  } }} 习惯使用标记的人一眼可以看出,$rootnamespace$和$safeitemrootname$就是刚才我提到的关键字,分别代表当前项目的缺省命名空间和用户提供的命名。 接着编写模板文件,模板文件是一个XML文件,后缀为.template,其格式可以参考开发环境提供的模板C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033我没有找到好的文档描述文件格式,但我们可以照着开发环境提供的模板依葫芦画瓢,下面是系统模板文件<VSTemplate Version="1.1.0" Type="Item"> <TemplateData>  <Name>   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2237"/>  </Name>  <Description>   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2264"/>  </Description>  <Icon>   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4535"/>  </Icon>  <ProjectType>   <Languages>    <Language>CSharp</Language>   </Languages>  </ProjectType>  <SortOrder>10</SortOrder>  <DefaultName>Form.cs</DefaultName> </TemplateData> <TemplateContent>  <References>   <Reference>    <Assembly>System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>   <Reference>    <Assembly>System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>   <Reference>    <Assembly>System.Drawing, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>   </Reference>   <Reference>    <Assembly>System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>   <Reference>    <Assembly>System.Xml, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>  </References>  <ProjectItem>   <SourceFile>Form.cs</SourceFile>   <ReplaceParameters>true</ReplaceParameters>   <SubType>Form</SubType>  </ProjectItem>  <ProjectItem>   <SourceFile>Form.Designer.cs</SourceFile>   <ReplaceParameters>true</ReplaceParameters>  </ProjectItem> </TemplateContent></VSTemplate> 首先,我们研究一下TemplateData节,包含nane,description,icon分别代表名字,描述和图标,在我们newItem的时候,他们显示在列表框中。那些GUID,ID我想它无非是去定位资源的位置而已。Icon我没有办法提供,名字和描述我可以直接写的。另外一个节点TemplateContent中描述的是模板需要的依赖和文件内容,可以包含多个文件,如Winform根据上面的分析,我们尝试书写模板如下:1,代码文件#该代码由大坏蛋的模板生成#region Using directivesusing System;using System.Text;using System.Windows.Forms;#endregion namespace $rootnamespace${ class $safeitemrootname$: Control {  public $safeitemrootname$()  {  } }} 2,模板文件<VSTemplate Type="Item" Version="1.1.1"> <TemplateData>  <Name>   <String>TestTemplate</String>  </Name>  <Description>   <String>TestTemplate for joycode</String>  </Description>  <ProjectType>   <Languages>    <Language>CSharp</Language>   </Languages>  </ProjectType>  <DefaultName>Test.cs</DefaultName> </TemplateData> <TemplateContent>  <References>   <Reference>    <Assembly>System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>   <Reference>    <Assembly>System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>   <Reference>    <Assembly>System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>   </Reference>  </References>  <ProjectItem>   <SourceFile>dhd.cs</SourceFile>   <ReplaceParameters>true</ReplaceParameters>  </ProjectItem> </TemplateContent></VSTemplate> 3,将这两个文件压缩成一个ZIP包,将该ZIP文件拷贝到C:\Documents and Settings\chenchangjian.H2000\My Documents\Visual Studio\ItemTemplates\Visual C#下,打开你的开发环境试试吧!注意:居然不支持中文!  ...[阅读全文]

posted @ | Feedback (9) |

摘要:今天一个同事发现自己的工程中如下代码无论如何都过不去System.Data.OleDb.OleDbConnection con = new OleDbConnection();当然SQLConnection,OracleConnection也一样出错,就这么简单的一句话百思不得其解。网上Google也不得其解。其错误提示:GetConfig was called during configuration initialization,看来与配置文件相关,于是删除配置文件,重新编译,问题依旧!后仔细检查发现xxx.exe.config文件居然还在DEBUG目录下,打开发现其中有两个程序中没有对应的解释器的配置节,将这两个节点删除,问题解决。BUG总结:OleDbConnection的构造函数会读配置文件,且在你的配置文件中有无人认领的自定义配置节(没有对应的IConfigurationSectionHandler)时会有问题。vs2003在删除app.config后重新编译会帮你删除以前生成的配置文件,vs2005不会。...[阅读全文]

posted @ | Feedback (7) | Filed Under [ C# 语言 ]

摘要:现手头有不少Gmail邀请,有需要的请留言,并留下自己的email,注意,为了防止垃圾邮件,建议讲@用at或其它可以理解的形式表示,先到先得,博客堂和博客园用户优先...[阅读全文]

posted @ | Feedback (35) |