首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

自各儿动手编写一个VS插件(五)

2013-10-07 
自己动手编写一个VS插件(五)作者:朱金灿来源:http://blog.csdn.net/clever101继续编写VisualStudio插件。这

自己动手编写一个VS插件(五)

作者:朱金灿

来源:http://blog.csdn.net/clever101

 

        继续编写VisualStudio插件。这次我编写的插件叫DevAssist(意思是开发助手)。在看了前面的文章之后你知道了一个VisualStudio插件一般是由两个工程组成的:功能dll和资源dll。首先我们先建一个功能dll——DevAssist,具体过程请参考第一篇:自己动手编写一个VS插件(一)。然后我们再建一个资源dll——DevAssistUI。

 

编译一下DevAssistUI工程,结果出错:

generalerror c1010070: Failed to load and parse the manifest

   上网查了下,发现编译一个空工程会出现这个错误,于是把一个位图资源导入进去再编译就没有这个错误了。再编译DevAssistUI工程,还有错误:

 

1>------已启动生成: 项目: DevAssistUI, 配置: Debug Win32 ------

1>正在链接...

1>LINK: error LNK2001: 无法解析的外部符号 __DllMainCRTStartup@12

1>E:\PIE3_src\outdir/Debug/1033\DevAssistUI.dll: fatal error LNK1120: 1 个无法解析的外部命令

1>生成日志保存在“file://E:\PIE3_src\Intdir\Debug\DevAssistUI\BuildLog.htm”

1>DevAssistUI - 2 个错误,0 个警告

========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

 

       在工程设置里把该工程改为无入口点即可,如下图:  自各儿动手编写一个VS插件(五)

     

      现在我们开始实现创建一个工具栏并把它显示出来。首先需要在AddIn.rgs中指定资源dll,具体是在HKCU段添加SatelliteDllName和SatelliteDllPath两个变量,具体如下:

HKCU

{

    NoRemove 'SOFTWARE'

    {

       NoRemove 'Microsoft'

       {

           NoRemove 'VSA'

           {

              NoRemove '9.0'

              {

                  NoRemove 'AddIns'

                  {

                     ForceRemove'DevAssist.Connect'

                      {

                         valLoadBehavior = d 1

                         valCommandLineSafe = d 0

                         valCommandPreload = d 0

                         valFriendlyName = s 'DevAssist -开发助手。'

                         valDescription = s 'DevAssist - 用于辅助开发。'

                         valAboutBoxDetails = s '有关DevAssist的详细信息,请参见DevAssist 站点\r\nhttp://blog.csdn.net/clever101\r\n关于客户支持,请致电: 1-800-xxx-xxxx。\r\n版权所有(C) 2013 DreamStudio Inc.'

                         valAboutBoxIcon = s '%MODULE%,1'

                         val SatelliteDllName = s 'DevAssistUI.dll'

                         valSatelliteDllPath = s '%MODULE_PATH%'

                     }

                  }

              }

           }

       }

    }

    NoRemove 'SOFTWARE'

    {

       NoRemove 'Microsoft'

       {

           NoRemove 'VisualStudio'

           {

              NoRemove '9.0'

              {

                  NoRemove 'AddIns'

                  {

                     ForceRemove'DevAssist.Connect'

                     {

                         valLoadBehavior = d 1

                         valCommandLineSafe = d 0

                         valCommandPreload = d 0

                         valFriendlyName = s 'DevAssist -开发助手。'

                         valDescription = s 'DevAssist - 用于辅助开发。'

                         valAboutBoxDetails = s '有关DevAssist的详细信息,请参见DevAssist 站点\r\nhttp://blog.csdn.net/clever101\r\n关于客户支持,请致电: 1-800-xxx-xxxx。\r\n版权所有(C) 2013 DreamStudio Inc.'

                         valAboutBoxIcon = s '%MODULE%,1'

                         val SatelliteDllName = s 'DevAssistUI.dll'

                         valSatelliteDllPath = s '%MODULE_PATH%'

                     }

                  }

              }

           }

       }

    }

}

然后开始添加创建工具栏的代码:

   然后编译如果还要错误就重启VS,如果还有错误就打开任务管理器,杀死所有explorer.exe,然后新建一个explorer进程。

 

c.修改工具栏按钮的位图资源或提示,但是工具栏总是不更新。

   在工具栏的自定义对话框中将工具栏删掉,如下:

自各儿动手编写一个VS插件(五)

      然后重启VS再启动插件即可看到工具栏的更新状态。






热点排行