Visual Studio 生成后事件使用VBP LM 命令行
简介
通过VS宏来编辑生成前、后事件命令行,来执行个性化编译操作。
例如:在集成SDK做二次开发时,可以通过生成后事件将动态库等文件拷贝到程序默认生成目录下,且对默认生成的应用程序文件,可以修改其名称等,以达到自动打包版本等目的
本文档演示通过vs 生成后事件结合vbp LM 命令行实现程序编译完成自动加壳的步骤。
使用流程
1. 获取ssp文件
第一次使用命令行加壳需要先将程序编译完成,使用拖入加壳工具中填写许可信息然后保存配置文件。后续只要配置文件和被加壳程序在同一路径下,或者命令行使用-x 选项指ssp文件即可。如果许可选项不发生改动则不需要重新程序ssp 文件.
2. 在vs工程属性中添加vbp lm 命令行
打开项目后右键工程选择属性
在生成后事件命令行填写加壳命令行
"C:\Program Files (x86)\senseshield\sdk\Tool\VirboxProtect\bin\virboxprotector_con.exe" $(TargetDir)GetLicenseInfo.exe -c local -p 12345678
命令行格式为
<virboxprotector_con.exe 所在路径> <加壳后程序输出路径> -c local -p <控制锁pin码>
如果ssp 文件和被加壳的程序不在相同路径下需要使用 -x 指定ssp 文件
<virboxprotector_con.exe 所在路径> <加壳后程序输出路径> -c local -p <控制锁pin码> -x <dir\xxx.ssp>
如果使用云账号的方式
<virboxprotector_con.exe 所在路径> <加壳后程序输出路径> -c cloud -u <账号> -p <密码> -x <dir\xxx.ssp>
点击生成,观察输出窗口
宏
为方便开发者编写,可以使用任何宏来指定文件位置,或在存在多种选择的情况下获取输入文件的实际名称。 这些宏不区分大小写。
宏 | 说明 |
---|---|
$(ConfigurationName) | 当前项目配置的名称,例如,“调试”。 |
$(OutDir) | 相对于项目目录的输出文件目录的路径。 这解析为输出目录属性的值。 它包括尾部反斜杠“\”。 |
$(DevEnvDir) | Visual Studio 的安装目录(使用驱动器和路径进行定义);包括尾部反斜杠“\”。 |
$(PlatformName) | 当前目标平台的名称。 例如,“AnyCPU”。 |
$(ProjectDir) | 项目的目录(使用驱动器和路径进行定义);包括尾部反斜杠“\”。 |
$(ProjectPath) | 项目的绝对路径名称(使用驱动器、路径、基名称和文件扩展名进行定义)。 |
$(ProjectName) | 项目的基名称。 |
$(ProjectFileName) | 项目的文件名称(使用基名称和文件扩展名进行定义)。 |
$(ProjectExt) | 项目的文件扩展名。 文件扩展名之前包括“.”。 |
$(SolutionDir) | 解决方案的目录(使用驱动器和路径进行定义);包括尾部反斜杠“\”。 |
$(SolutionPath) | 解决方案的绝对路径(使用驱动器、路径、基名称和文件扩展名进行定义)。 |
$(SolutionName) | 解决方案的基名称。 |
$(SolutionFileName) | 解决方案的文件名称(使用基名称和文件扩展名进行定义)。 |
$(SolutionExt) | 解决方案的文件扩展名。 文件扩展名之前包括“.”。 |
$(TargetDir) | 生成的主输出文件的目录(使用驱动器和路径进行定义)。 它包括尾部反斜杠“\”。 |
$(TargetPath) | 生成的主输出文件的绝对路径名称(使用驱动器、路径、基名称和文件扩展名进行定义)。 |
$(TargetName) | 生成的主输出文件的基名称。 |
$(TargetFileName) | 生成的主输出文件的文件名称(使用基名称和文件扩展名进行定义)。 |
$(TargetExt) | 生成的主输出文件的文件扩展名。 文件扩展名之前包括“.”。 |
更多DOC命令可参考[《Windows命令》]](https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/windows-commands)