在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情
我们可以利用VS中的项目生成事件属性来进行生成后的DLL复制到指定的目录,或者进去其他的操作,比如打包成.zip的压缩包
属性如图:
第一:需要在生成前进行操作,就在预先生成事件命令行写需要执行的bat代码,如果不会请百度如何写。
这里记录下我项目中需要使用的代码:
if not exist $(ProjectDir)....SiteDllClientBinModules md $(ProjectDir)....SiteDllClientBinModules
这里需要解析下,$(ProjectDir)是VS的宏定义,生成的是当前项目的目录路径
这一行代码的作用是,如果不存在modules这个文件夹则创建一个
第二:生成后要进行复制dll到指定路径,把dll压缩成zip格式的压缩文件,这里根据不同的需求作出不同的处理,
代码如下:
copy $(TargetPath) $(ProjectDir)....ProjDll$(TargetFileName)
if exist "%ProgramFiles%WinRARwinrar.exe" ("%ProgramFiles%WinRARwinrar.exe" a "$(ProjectDir)binDebugWorkflowDesigner.dll.zip" "$(ProjectDir)binDebugWorkflowDesigner.dll" )
copy $(TargetPath).zip $(ProjectDir)....SiteDllclientbinModules$(TargetFileName).zip
copy $(TargetPath).zip $(ProjectDir)..LEGS.WebclientbinModules$(TargetFileName).zip
下面解析下以上的代码
1、copy $(TargetPath) $(ProjectDir)....ProjDll$(TargetFileName)
注意:$(TargetPath)生成的是完整的文件目录,比如DLL的项目名称为abc这里生成的路径如d: etsindebugabc.dll
2、if exist "%ProgramFiles%WinRARwinrar.exe" ("%ProgramFiles%WinRARwinrar.exe" a "$(ProjectDir)binDebugWorkflowDesigner.dll.zip" "$(ProjectDir)binDebugWorkflowDesigner.dll" )
这里查看了下WinRaR的帮助文档就是利用bat语句进行调用winrar来把文件压缩成zip格式的压缩文件,先判断ProgramFiles目录下是否存在winrar.exe文件,存在则调用
命令为:"%ProgramFiles%WinRARwinrar.exe" a "压缩后的目标文件" ""需要压缩的文件
3、copy $(TargetPath).zip $(ProjectDir)....SiteDllclientbinModules$(TargetFileName).zip
copy $(TargetPath).zip $(ProjectDir)..LEGS.WebclientbinModules$(TargetFileName).zip
这里的代码很简单,就是复制文件到指定目录而已