zoukankan      html  css  js  c++  java
  • VS编译完成后自动复制到远程机器

    缘起

    最近在调试网络通信,每次一有点小修改,都要将程序从开发机复制到测试机,不胜烦扰。既然我们程序猿,为什么要那么死板呢,能够用代码解决的问题,就不要用手去解决。

    解决过程

    复制

    手工复制外有没有其他办法了?这个时候大家一定会想到批处理。在命令提示符下面,我们用于管理文件和文件夹的命令比较多,比如RENAME、DEL、COPY用于文件,MKDIR、RMDIR、XCOPY用于目录。

    如果查看常用的命令,可以通过在命令提示符中输入Help进行查看,如下图:

    1

    我们需要复制整个目录,所以使用XCOPY命令(如果只复制单个文件,也可以用COPY),XCOPY的常用参数如下:

    2

    我们需要的是到远程机器上,但是命令是在本机上操作。我们可以把远程机器的目录共享,就像操作本机磁盘一样,那么这些命令也是适用的。

    共享

    共享的步骤如下(熟悉的可直接跳过,以Win7系统为例):

    1. 在待共享的文件夹,在右键上单击属性,切换到共享选项卡
    2. 单击共享按钮,在弹出的文件共享对话框中添加用户(添加用户需要在文本框中单击三角形按钮选择用户)
    3. 设置权限(因为我们要复制文件所以选择读取/写入)
      3
      在图中,我选择的是EveryOne,所有用户。出于安全考虑,不建议这样做
    4. 在浏览器中输入我们共享的文件夹地址,输入用户名密码,这样就可以在命令提示符中直接使用命令复制了(如果关闭了密码保护密码共享,可省略这一步,但是Windows中默认是打开的,关闭是在控制面板->网络和共享中心->更改高级共享设置中)

    好了,我们现在知道如何通过命令复制文件夹到远程计算机上了,但是不会每次都通过命令复制吧,这样还不如直接手动复制了。当然不会了,我们的VS不是别人称为宇宙最强IDE么,当然考虑到这一点了,就是生成事件了。

    生成事件

    生成事件包括生成前事件和生成后事件,分别是在编译开始之前和编译完成之后进行的自定义处理。

    在C++项目中,生成事件在项目的属性页中设置

    4

    在C#中,也在项目的属性页中设置

    5

    我们可以编辑生成事件,VS在其中定义了许多宏(C++中更多),如项目名称、生成平台、输出目录等。下面仅以C#为例简单说明:

    单击编辑后期生成事件,在弹出的窗口中单击宏按钮,在宏列表中单击相应的宏名称,即可插入宏变量到编辑框中,组合宏变量和常见的命令,即可实现很丰富的功能,如上面的拷贝文件到远程计算机。除了使用命令,我们还可以调用批处理,如上图所示,在批处理前面加上call。注意:批处理的当前目录是指工程的输出目录(即在生成中设置的输出目录,默认即binDebug或者binRelease)

    远程关进程

    上面一切看起来工作的很好。但是,有时候我调试发现了Bug,直接在开发机上运行,却报生成失败,原来是生成后事件未成功运行。再一查,是测试机上没有关掉对应的程序。这个问题怎么解决呢?

    在命令行下,杀进程可以通过taskkill,那么它能不能杀远程进程呢?查看帮助。如下图:

    6

    可以看出taskkill可以连接远程系统、指定用户名、指定密码、指定进程的映像名(一般就是进程的执行文件名,如XX.exe)。

    于是测试:

    7

    尼玛,怎么跟想象的不一样。问题出在哪里?

    hehe

    RPC服务器不可用的解决办法

    这个问题我没思路,但是我没思路,别人不一定没有啊。上网一查一对,原来问题出在防火墙上,关了防火墙(根据网络类型选择相应的防火墙)在测试机上检验,果然可以使用了。

    当然,在实际使用中,关掉防火墙是不安全的做法,可以进行如下操作。

    1. 依次选择控制面板->Windows防火墙->高级设置
    2. 在高级安全Windows防火墙中选择入站规则
    3. 找到远程计划任务管理(RPC),配置文件为专用、公用,启用规则。
      8
  • 相关阅读:
    [2010山东ACM省赛] Balloons(搜索)
    [2010山东ACM省赛] Greatest Number(数的组合+二分搜索)
    [ACM] hdu 1213 How Many Tables(并查集)
    C Shuffle Cards
    快速读入输出模板
    J Distance to Work
    E Sort String
    H Diff-prime Pairs
    A PACM Team
    区间 (interval)
  • 原文地址:https://www.cnblogs.com/yiyan127/p/VS_AutoCopy.html
Copyright © 2011-2022 走看看