同一文件夹的不同工程的编译问题

来源:互联网 发布:淘宝买二手苹果6 编辑:程序博客网 时间:2024/06/01 09:06

同一文件夹的不同工程的编译问题

  公司写的程序需要进行压力测试,但是现成的测试软件都不能测试公司的程序。所以只有自己写机器人程序,需要引用发布版程序中大部分的类库,但是引用的类又稍有不同,例如:发布版程序需要检查权限,而测试版不管理权限,只测试操作。

  开始我把原工程FgLogic.csproj文件复制一分出来,重命名为FgLogicRobot.csproj,但是输出程序集名称没有改还是FgLogic,只是将生成的输出路径改了(原来是..\..\Bin,现在是..\..\RobotBin),,然后将操作不同的类文件DefManager.cs从工程中排除,再把其副本命名为DefManagerRobot.cs,并加入工程,修改代码编译。

  开始测试机器人程序(在VS中F5启动)没有问题,但是在运行发布版程序时发现有异常,当我将发布版解决方案重新编译后又可以用了,当然大家可以想像此时机器人程序不能正常运行(在VS中F5启动)了。

  怎么回事呢?来来回回搞了很多次,我静下心来想了想,从VS的工作机制来说,编译的时候VS会先将编译得到的文件先放在工程文件夹下的 obj\Debug\ 下,然后再拷到编译目录中。因为我没有将程序集名称改掉,所以无论是原工程FgLogic.csproj还是机器人工程FgLogicRobot.csproj在编译时都会从FgLogic\obj\Debug\ 下取出文件放到自己的输出路径中。VS还有一个特点,就是如果工程的代码没有修改的话,再编译时程序是不会将 obj\Debug\ 下的dll文件重新生成的,所以就出现了上述情况。

  知道了原因,我将机器人的工程的程序集名称全部修改了,再编译运行,上面的情况没有出现了。YeaH!

原创粉丝点击