首页 > 其他分享 >使用批处理命令转移dll文件

使用批处理命令转移dll文件

时间:2022-11-30 16:55:32浏览次数:36  
标签:文件 扩展名 TargetDir% 批处理 move dll Dll 转移

 

引用同一个解决方案中的项目dll或者NuGet安装的dll时,需要实时更新dll,但dll只能自动复制到软件启动目录。
可以使用生成后事件命令行来转移dll文件,如下图:

 

直接使用批处理命令转移dll文件,仍然以VSDebug为例,如下所示:

::@echo off
::设置相关路径
set TargetDir=D:\软件代码\代码调试\VSDebug\VSDebug\bin\Debug\
set ProjectName=VSDebug

::检查Lib、Dll文件夹路径是否存在
IF NOT EXIST "%TargetDir%Lib" MD "%TargetDir%Lib"
IF NOT EXIST "%TargetDir%Dll" MD "%TargetDir%Dll"

::设置需要放到Lib路径下的dll
setlocal enabledelayedexpansion 
::以Newtonsoft.Json.dll为例
set Libs[1]=Newtonsoft.Json
set length=1

::转移指定dll文件到Lib文件夹
for /l %%n in (1,1,%length%) do (
echo  转移 !Libs[%%n]! 相关文件
move  "%TargetDir%!Libs[%%n]!.dll"  "%TargetDir%Lib"
move  "%TargetDir%!Libs[%%n]!.xml"  "%TargetDir%Lib"
move  "%TargetDir%!Libs[%%n]!.pdb"  "%TargetDir%Lib"
)

::没有指定的dll放到Dll文件夹
move  "%TargetDir%*.dll"  "%TargetDir%Dll"
move  "%TargetDir%*.xml"  "%TargetDir%Dll"
move  "%TargetDir%*.pdb"  "%TargetDir%Dll"

::把主程序的相关的文件转出来
move  "%TargetDir%Dll\%ProjectName%.xml" "%TargetDir%%ProjectName%.xml"  
move  "%TargetDir%Dll\%ProjectName%.pdb" "%TargetDir%%ProjectName%.pdb"

::pause

 @echo off 和pause组合使用的作用是在以bat文件运行完成后不关闭cmd,这里我们是以命令行直接加在生成后事件中的,

所以这里没有用到此组命令,故进行注释不使用

 

宏说明

$(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”)。

$(OutDir) 输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。它包括尾部的反斜杠“\”。

$(DevEnvDir) Visual Studio的安装目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。

$(PlatformName) 当前目标平台的名称。例如“AnyCPU”。

$(ProjectDir) 项目的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。

$(ProjectPath) 项目的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。

$(ProjectName) 项目的基本名称。

$(ProjectFileName) 项目的文件名(定义为基本名称 + 文件扩展名)。

$(ProjectExt) 项目的文件扩展名。它在文件扩展名的前面包括“.”。

$(SolutionDir) 解决方案的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。

$(SolutionPath) 解决方案的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。

$(SolutionName) 解决方案的基本名称。

$(SolutionFileName) 解决方案的文件名(定义为基本名称 + 文件扩展名)。

$(SolutionExt) 解决方案的文件扩展名。它在文件扩展名的前面包括“.”。

$(TargetDir) 生成的主输出文件的目录(定义为驱动器 + 路径)。它包括尾部的反斜杠“\”。

$(TargetPath) 生成的主输出文件的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。

$(TargetName) 生成的主输出文件的基本名称。

$(TargetFileName) 生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。

$(TargetExt) 生成的主输出文件的文件扩展名。它在文件扩展名的前面包括“.”。

标签:文件,扩展名,TargetDir%,批处理,move,dll,Dll,转移
From: https://www.cnblogs.com/ny-wmq/p/16938951.html

相关文章