让领导给你配个好点的电脑,不要用2G的内存去开发一运行就要占用3G内存的程序
项目大,把一部分类库项目打成dll引用
一百年不改的东西就不要把源码也整个都放到同一个解决方案里
每次打开VS不要只知道不停的打开窗口从来也不关闭

解决方案 »

  1.   

    让领导给你配个好点的电脑,不要用2G的内存去开发一运行就要占用3G内存的程序
    项目大,把一部分类库项目打成dll引用
    一百年不改的东西就不要把源码也整个都放到同一个解决方案里
    每次打开VS不要只知道不停的打开窗口从来也不关闭
    各功能的耦合比较严重,怎么细分模块呢?
      

  2.   

    要看你怎么定义“使用很少的功能”
    如果指动态的,可以用菜单分析->性能的诊断,把你的代码按正常使用跑一会,会统计出用的最多和最少的代码
    如果指静态的有很多工具可以查看某一个方法的被引用次数,但全局统计的好像没见过。像resharper可以找到全局未使用过的方法
      

  3.   

    估计是先反射,取所有方法名.然后对代码 LIKE %NAME(% 
      

  4.   

    我的思路是找出所有的button和所有的menuitem 然后在他们的click绑定一个新的统计函数.
    但是现在找不全button和menuitem
    项目是wpf的。
      

  5.   

    确实是这样的,各位的什么好的设计经验吗?
    重做当然不是眼下最急的问题
    写个小工具,反射每个dll里面的方法,在方法体追加你的公共代码调用部分,其他没有更省事的方法了!
    或者重构你的代码,一个口子提交方法体,在这个口子里增加公共代码
      

  6.   

    有方法,可以考虑使用AOP,最典型的应用就是进行方法之前和方法结束之间执行自定义代码,现在最好用的AOP框架应该是PostSharp(可惜需要付费)
      

  7.   


    YESfree www.castleproject.org/projects/dynamicproxy
      

  8.   

    首先你搜索下PresentationTraceSources类相关的文章,看看WPF内置的trace能否满足需要。如果可以,这个涉及的工作量应该最小。其它方案有:
    如果是开发人员来控制程序使用,可以用profiler的方式,有现成的代码覆盖率工具,比如dotCover、NCover之类,可以进行一系列安排好的场景来操作,根据覆盖率看哪些代码没有被覆盖。
    优点:无需改动程序,粒度可以到每一行代码。
    缺点:严重影响性能,所以不可能在这种方式下让客户使用,只能自己安排场景测试。如果需要收集客户的使用数据,那最好的方案还是AOP。有两种情况:
    1. 原来就是基于IoC/DI框架来搭建的。这种实施动态AOP就很简单,改改IoC/DI的配置就能实现,比如在创建一些关键对象时做计数或log,或者使用动态代理拦截方法。如果没有使用IoC/DI框架,但是自己实现了类似的功能也行。比如有自己的factory和command模式,也能实现拦截。
    优点:代码改动少并且集中,并且完全是代码级别的修改(对比静态AOP)。
    缺点:依赖原来的设计。2. 原来没有基于IoC/DI框架,自己的设计也没有合适的拦截点,那就只能使用静态AOP方式在程序编译好之后织入一些用来计数和log的代码。做的最好的应该还是商业化的PostSharp,也有一些免费工具,比如 Spring.net、Fody等等。有些支持通过配置批量定义目标、有些只支持通过attribute来定义目标。当然也有更底层的办法,使用Cecil或者dnlib来自己修改程序集。
    优点:无需依赖原来的设计,基本都能用。
    缺点:程序集级别修改,增加了理解的难度。
    (还有一些混淆工具也提供了feature usage report的功能,比如smart assembly,好不好用我就不知道了)
      

  9.   


    lz 是想统计每一个方法的执行时间。而这个帖子的标题,纯粹是误导人的。它分不清楚方法的静态定义跟动态调用统计之间的区别。当然可以遍历应用程序中调用的所有程序集中的所有可执行方法。但是lz根本不是这样的意思,他只是道听途说然后曲解意思,走上了经常把老板带上“不归路”的道路。
      

  10.   


    Hook C#只能用消息钩子,函数钩子是不行的,那是C的玩意
    如果你只是想遍历NET程序的类与方法,用反射就好了。
      

  11.   

    最多有用反射遍历Dll的方法和属性,程序的还真没听说过
      

  12.   


    lz 是想统计每一个方法的执行时间。而这个帖子的标题,纯粹是误导人的。它分不清楚方法的静态定义跟动态调用统计之间的区别。当然可以遍历应用程序中调用的所有程序集中的所有可执行方法。但是lz根本不是这样的意思,他只是道听途说然后曲解意思,走上了经常把老板带上“不归路”的道路。
    我想统计是各功能菜单点了多少次
      

  13.   

    如果只是菜单,遍历菜单,给每个item的点击事件追加一个相同的click事件,然后事件里判断引发事件的sender,把信息存文件或数据库里就ok了
    一个菜单(或按钮,或别的什么)可以绑定多个相同的事件,事件会依次触发
    不过你需要将代码写进designer里,要在执行实际的逻辑之前先执行这个事件
    否则如果菜单功能是弹出模式窗体之类的阻塞代码,后续事件有可能会无法得到执行
      

  14.   

    wpf里面的tabcontrol,未激活的选项卡里面的button找不到