读书人

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

发布时间: 2013-10-07 19:41:22 作者: rapoo

自己动手编写一个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再启动插件即可看到工具栏的更新状态。






读书人网 >VSTS

热点推荐