• 关于编译


    脚本.bat文件

    之前对脚本文件接触较少,以下面的小段代码,以小窥大,开始对脚本的初步学习

    -----------------------------------------------------------------------------------------------
    @echo off
    echo 现在的 %%cd%% 和 %%~dp0 没啥区别...
    echo %%cd%%  ---  %cd%
    echo %%~dp0  ---  %~dp0
    
    echo 请在按下任意键后,将跳转到D盘的111222目录去...
    pause > nul
    
    cd /d D:111222
    
    echo 现在再来看看它们的区别...
    echo %%cd%%  ---  %cd%
    echo %%~dp0  ---  %~dp0
    pause
    ------------------------------------------------------------------------------------------------
    

    1)命令行文件夹

    cd /d D:111222:表示直接切换到后面的文件夹。若不加参数 /d,达到同样的效果需要2步走

    cd D:111222
    D:
    

    或者更麻烦的方法,按路径从左至右依次进入

    D:
    cd 111
    cd 222
    

    2)pause .VS. pause > nul

    关于编译pause:暂停命令,执行时会在命令行窗口显示“请按任意键继续. . .”,并等待你按键

    pause > nul:作用相同,区别是不显示“请按任意键继续. . .”这些字,nul 把文字隐藏了

    nul 是空设备/空文件,可以理解成批处理的“黑洞”(什么东西都可以吞下,并使之永远消失) 

    3)@ .VS. echo off

    echo off:关闭下面命令的回显

    @:关闭当前命令回显,值影响当前行,但是,@并不受echo状态的影响

    @echo off:关闭所有命令行的回显
    

    4)%cd% .VS. %~dp0

    • %cd%:当前目录工作路径,%~dp0:脚本所在路径
    • %cd% 得到的最后不带,%~dp0后面会带

    在当前目录没有变化的情况下,两者确实没啥不同,但当脚本在运行中切换了目录,那么就有区别。

    • a)%cd% 可以用在批处理文件中,也可以用在命令行中,展开后是驱动器盘符:+当前目录。如在dos窗口中进入c:dir目录下面, 输入:echo %cd% ,则显示为:c:dir。 %cd%的内容是可以被改变的,其内容为命令的执行路径或批处理文件的执行路径。
    • b)%~dp0 只可以用在批处理文件中,它是由它所在的批处理文件的目录位置决定的,是批处理文件所在的盘符:+路径。在执行这个批处理文件的过程中,它展开后的内容是不可以改变的。

    5)其他常用命令

    ..:回溯至上一层目录
    call:调用另一个批处理文件 call build_ex.bat
    @if not exist %OUTROOT% @md %OUTROOT%:目录|文件不存在则创建
    @rem:用于注释
    @ren:文件重命名
    @del:删除文件
    %date% %time%:当前日期时间
    Copy "%OUTROOT%xxx.txt" "%OUTPUT%":文件拷贝
    

    6)文件操作

    //脚本启动.exe程序
    pushd 绝对路径(最后不带)
    start exeName.exe
    exit
    

      

    Debug .VS. Release

    1. Debug:调试模式,包含调试信息,生成的二进制命令没有经过编译器的优化。

    2. Release:发布模式,编译器优化,不能对源代码进行调试,代码文件小,执行速度优。

    Debug和Release模式均会生成.exe或.dll文件。但是Debug模式还会生成.pdb文件,包含代码断点、单步执行等调试信息。

    注意,代码中包含预编译指令时,务必谨慎;

    在实际生产上部署,应该使用Release版本。

    关于obj文件

    用于存放编译过程中生成的中间临时文件。obj目录中包含Debug和Release两个子文件夹,是项目生成的.dll的源目录,然后将生成好的.dll复制到bin目录下。在.Net中,

    • 编译是分模块进行的,每个模块的编译结果都保存在obj目录下,最后会合并为一个.exe或.dll文件保存到bin目录下;
    • 编译是增量编译,只重新编译改变了的模块;

    obj目录保存了这些小块的编译结果,可以加快编译速度。

    疑难杂题

    1. ConfigurationManager.GetSection Error

    //问题
    创建 xxx 的配置节处理程序时出错: 未能加载文件或程序集“exeName”或它的某一个依赖项。系统找不到指定的文件。 (exeName_Test.exe.Config line 4);
    //解决
    右键项目,修改程序集名称,然后重新生成
    

    注意,程序集名称、生成的exeName、配置文件名,以及配置文件中的

      <configSections>
        <section name="nodeName" type="XXX.AppName.Config.className, 程序集name "/>
      </configSections>
    

    要保持一致。其中,className 程序中定义形式如下

    namespace XXX.AppName.Config
    {
        public class className: ConfigurationSection
        {
            [ConfigurationProperty("configName", IsRequired = true)]
            public ServerCollection ConfigName
            {
                get { return this["configName"] as ServerCollection; }
            }
        }
    }
    
  • 相关阅读:
    手把手教您玩转信用卡 如何“以卡养卡”合法“套现”
    267家已获第三方许可机构名单查询
    C#生成图片验证码
    File I/O
    文件上传代码
    集合框架
    接口
    多态
    封装
    jsp做成mvc模式的代码
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/8885928.html
Copyright © 2020-2023  润新知