博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

利用VS2010的项目生成事件属性进行生成文件的复制与打包

Posted on 2013-08-13 17:38  Wuqh  阅读(3748)  评论(0编辑  收藏  举报

在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情

我们可以利用VS中的项目生成事件属性来进行生成后的DLL复制到指定的目录,或者进去其他的操作,比如打包成.zip的压缩包

属性如图:

第一:需要在生成前进行操作,就在预先生成事件命令行写需要执行的bat代码,如果不会请百度如何写。

这里记录下我项目中需要使用的代码:

if not exist $(ProjectDir)..\..\SiteDll\ClientBin\Modules md $(ProjectDir)..\..\SiteDll\ClientBin\Modules\

这里需要解析下,$(ProjectDir)是VS的宏定义,生成的是当前项目的目录路径

这一行代码的作用是,如果不存在modules这个文件夹则创建一个

第二:生成后要进行复制dll到指定路径,把dll压缩成zip格式的压缩文件,这里根据不同的需求作出不同的处理,

代码如下:

copy $(TargetPath) $(ProjectDir)..\..\ProjDll\$(TargetFileName)
if exist "%ProgramFiles%\WinRAR\winrar.exe"  ("%ProgramFiles%\WinRAR\winrar.exe"  a "$(ProjectDir)bin\Debug\WorkflowDesigner.dll.zip" "$(ProjectDir)bin\Debug\WorkflowDesigner.dll" )
copy $(TargetPath).zip $(ProjectDir)..\..\SiteDll\clientbin\Modules\$(TargetFileName).zip
copy $(TargetPath).zip $(ProjectDir)..\LEGS.Web\clientbin\Modules\$(TargetFileName).zip

下面解析下以上的代码

1、copy $(TargetPath) $(ProjectDir)..\..\ProjDll\$(TargetFileName)

注意:$(TargetPath)生成的是完整的文件目录,比如DLL的项目名称为abc这里生成的路径如d:\tets\bin\debug\abc.dll

2、if exist "%ProgramFiles%\WinRAR\winrar.exe"  ("%ProgramFiles%\WinRAR\winrar.exe"  a "$(ProjectDir)bin\Debug\WorkflowDesigner.dll.zip" "$(ProjectDir)bin\Debug\WorkflowDesigner.dll" )

这里查看了下WinRaR的帮助文档就是利用bat语句进行调用winrar来把文件压缩成zip格式的压缩文件,先判断ProgramFiles目录下是否存在winrar.exe文件,存在则调用

命令为:"%ProgramFiles%\WinRAR\winrar.exe" a "压缩后的目标文件" ""需要压缩的文件

3、copy $(TargetPath).zip $(ProjectDir)..\..\SiteDll\clientbin\Modules\$(TargetFileName).zip
copy $(TargetPath).zip $(ProjectDir)..\LEGS.Web\clientbin\Modules\$(TargetFileName).zip

这里的代码很简单,就是复制文件到指定目录而已