想利用vs.net的生成后事件将生成的dll文件自动copy到指定的系统目录中,于是,在项目属性中输入生成后事件指令如下
copy $(OutputDir)instrumentation.dll c:/windows/system32/
但产生了编译错误报告:
error PRJ0019: 工具从"正在执行生成后事件..."
网上搜索,没有有效解决办法。于是自己动手。
想想生成后事件不过也是命令行程序,因此在命令行下输入上面的copy指令,将$(OutputDir)换成输出目录的完整路径后顿悟…原来是因为工程建在c:/program files/文件夹内,中间有空格,因此shell理解为将c:/program这个文件(夹)copy到./files/…中,因此报错。
解决办法,将带空格的路径放在” ”内shell就可以正确识别了,指令如下
copy “$(OutputDir)instrumentation.dll” “c:/windows/system32/”
另外,类似的error PRJ0019不见得都是因为这个缘故,但都可以通过在cmd中直接测试生成后事件指令来分析解决,因为生成后事件实际上就是个shell脚本。