Windows操作系统中的Path环境变量:
当系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下寻找此程序外,还会到Path中指定的路径去找。
为了将编译生成的指定后缀的文件,存放到指定的文件夹中,在程序运行之初(即程序在调用所需DLL等文件前),将指定的文件夹路径追加到专用路径列表中。如此一来,程序在调用相应的DLL等文件时,如果在其它文件中,没有找到需要的DLL文件时,会自动到刚才新添加到专用路径中去查找,如果查找不到程序就会出错。
根据程序的这个特点,可以在项目属性的“生成事件”中添加相应的命令(对一些宏的利用、环境变量设置及DOS命令的组合),将编译生成的指定后缀的文件,存放到指定的文件夹中。这样使程序生成文件的存放整洁。
internal static class Program {
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
private static void Main() {
#pragma warning disable 0618 //关闭此警告信息提示
//将指定的目录名追加到专用路径列表。
AppDomain.CurrentDomain.AppendPrivatePath(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "mssql"));
#pragma warning restore 0681
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmLogin());
}
}
然后,找到项目“属性”的“生成事件”中,进行下面的宏、环境变量设置及DOS命令组合处理语句输入:
rd libs /s /q //在程序运行目录下删除libs目录及目录下子目录与文件,不要求确认信息
md libs //在程序运行目录下创建libs目录
del *.rar /q //在程序运行目录下删除后缀为.rar的文件,不要求确认
del *.zip /q //在程序运行目录下删除后缀为.zip的文件,不要求确认
move *.dll libs //将程序运行目录下后缀为.dll的文件,移动到libs文件夹
move *.xml libs //将程序运行目录下后缀为.xml的文件,移动到libs文件夹
move *.pdb libs //将程序运行目录下后缀为.pdb的文件,移动到libs文件夹
set releaseDir=d:\$(TargetName) //设置 releaseDir 变量为 d:\$(TargetName),TargetName为程序名称
rd %releaseDir% /s /q //同上rd libs /s /q的作用,%releaseDir% 环境变量的表示
md %releaseDir% //同上md libs
rd $(TargetDir)log /s/q //删除路径 $(TargetDir) 下的log文件夹
xcopy $(TargetDir)*.* %releaseDir% /s /y //将$(TargetDir)路径下的所有文件,复制到%releaseDir%,不要求确认。/S:复制目录和子目录,不包括空目录。
rd %releaseDir%\Data /s /q //删除%releaseDir%路径下的 Data文件夹及子目录和文件,不要求确认。