.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
通过DTE获取设计时开发环境

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

通过DTE获取设计时开发环境

 

关键词:DTE ,设计时 Design Time 开发环境

 

       Add-in程序的朋友我想应该是再熟悉不过了,像大名鼎鼎的单元测试和重构工具等,还有宏,或者更多只要嵌入到VS的开发环境当中去,我想DTE应该起到很重要的脚色。

      

       在这里我就不说那么多,就说怎么在设计时(Design Time获取项目的物理路径,我想做过组件的朋友应该不会陌生Design Time的用处。在设计时能够取到项目下的Web.Config的信息,或者取到自己定义的一些信息或数据。

      

       那么DTE是在一个叫"Microsoft Development Environment 7.0"COM当中的EnvDTE命名空间里。我们只需引用这个组件就行了。

 

      废话不用说太多,这些MSDN上都有,下面具个简单例子,就是自定义组件的设计器里面取到项目的物理路径,不管你把组件从ToolBox中拉到哪个项目里面,都能准确地取到所在项目的物理路径,这就是设计时的好处。

     

 

public class TestControlDesigner : System.Web.UI.Design.ControlDesigner

{

    public override string GetDesignTimeHtml()

    {

        string html = "found nothing";

        try

        {

            EnvDTE.DTE devenv = null;

            devenv = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.7.1");

            Array projects = (System.Array)devenv.ActiveSolutionProjects;

            if ((projects.Length == 0) || (projects.Length > 1))

            {

                html = "Exactly one project must be active";

            }

            else

            {

                EnvDTE.Project project = (EnvDTE.Project)(projects.GetValue(0));

                System.IO.FileInfo info = new System.IO.FileInfo(project.FullName);

                html = info.Directory.FullName;

            }

        }

        catch (Exception ex)

        {

            html = "Exception occured: " + ex.Message;

        }

        return html;

    }

}




相关文章

相关软件