最近CM(Configuration Management) 的同事在自定义开发TFS的过程中遇到一个问题。

领导要求快速开发一个工具, 可以自动连接TFS,然后自动Check out一些word文件, 然后程序修改后自动check in。(比如签名)
这个实现的话,需要3个方面:
1.根据现有TFS界面抽出可以使用的UI, 然后找到对应dll
2.利用C#的反射, 获取到对应字段或者属性, 进行更改。
3.现有UI不满足的情况下, 自己根据TFS的API,重新实现界面。

TFS的界面1
类名为TeamProjectPicker, 
dll名字为Microsoft.TeamFoundation.Client.dll
其内部包含TfsConnectDialog,如:
 public class TeamProjectPicker : IDisposable
  {
    private TfsConnectDataSource m_dataSource;
    private TfsConnectDialog m_internalDialog;
    private bool m_disposed;
    private CancelEventHandler AcceptButtonClick;
。。。。。
 }
然后根据反射获取TfsConnectDialog的各个UI元素,进行更改设置。

TFS的界面2
类名为:DialogChooseItem
dll名字为:Microsoft.TeamFoundation.VersionControl.Controls.dll
其内部包含ControlChooseItem, 如:
namespace Microsoft.TeamFoundation.VersionControl.Controls
{
  internal class DialogChooseItem : BaseDialog
  {
    private IContainer components;
    private Button ok;
    private Button cancel;
    private ControlChooseItem chooseItem;
    private TableLayoutPanel okCancelTableLayoutPanel;
    private TableLayoutPanel overarchingTableLayoutPanel;
...........
  }
}
同理根据反射,获取ControlChooseItem的各个UI元素, 然后更改设置。

TFS自定义开发中的反射应用的更多相关文章

  1. TFS扩展开发中遇到的坑

    本码农最近开发一个VS扩展,其中有些功能涉及到文件的签出.我们公司用的是TFS,遇到了一些奇特的现象,将解决过程记录如下. 一.明明在线的连接却Offline属性等于True public stati ...

  2. Java 反射在实际开发中的应用

    运行时类型识别(RTTI, Run-Time Type Information)是Java中非常有用的机制,在java中,有两种RTTI的方式,一种是传统的,即假设在编译时已经知道了所有的类型:还有一 ...

  3. [转]Java 反射在实际开发中的应用

    一:Java类加载和初始化 1.1 类加载器(类加载的工具) 1.2 Java使用一个类所需的准备工作 二:Java中RTTI 2.1 :为什么要用到运行时类型信息(就是RTTI) 2.2  :RTT ...

  4. java中的反射机制在Android开发中的用处

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...

  5. android开发在adapter中使用反射添加元素

    android开发中最常用的控件之一就是listview,伴随listview还要有adapter和放入适配器的item.然后假设其中有一部分item的生成符合一定规律,Item item = new ...

  6. 【转】.Net中通过反射技术的应用----插件程序的开发入门

    转自:http://www.cnblogs.com/winloa/archive/2012/03/25/2416355.html .Net中通过反射技术的应用----插件程序的开发入门 再开始之前,先 ...

  7. IOS开发中UITableView(表视图)的滚动优化及自定义Cell

    IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITable ...

  8. 【Swift】IOS开发中自定义转场动画

    在IOS开发中,我们model另外一个控制器的时候,一般都使用默认的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器 ...

  9. 【swift,oc】ios开发中巧用自动布局设置自定义cell的高度

    ios开发中,遇到自定义高度不定的cell的时候,我们通常的做法是抽取一个frame类,在frame类中预算好高度,再返回. 但是苹果出来自动布局之后...春天来了!!来看看怎么巧用自动布局设置自定义 ...

随机推荐

  1. 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:118 解决:54 题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N( ...

  2. [note]BSGS & exBSGS

    BSGS (感觉这东西还是要写一下) BSGS主要用于求解形如\(x^k=y\pmod p\)(注意这里p与x互质)这样的方程的最小正整数解的问题 设\(m=\lceil\sqrt p\rceil,k ...

  3. 在网页中显示PDF文件及vue项目中弹出PDF

    1.<embed width="800" height="600" src="test_pdf.pdf"> </embed ...

  4. 查询某个字段为null并且某个字段不为null的数据

    查询代码为null且ggid不为null的公司名 select name_of_invested_company from dwtz WHERE code is NULL and ggid is no ...

  5. DNS 原理入门 (转)

    DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...

  6. python3 mysql 多表查询

    python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id ...

  7. CSS3登录表单动画

    在线演示 本地下载

  8. 添加linux开机启动任务

    对于系统里面设置的开机启动程序 先来看一个例子nginx启动脚本 #!/bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $ ...

  9. XShell 连接虚拟机中的服务器 失败 、连接中断(Connection closed by foreign host.)

    在使用XShell连接虚拟机中的服务器时,报以下错误并断开连接,之前连接还是挺稳定的,忽然就这样了 Last login: Thu Aug :: from 192.168.1.102 [root@no ...

  10. HDU 3954 Level up(多颗线段树+lazy操作)

    又是一开始觉得的水题,结果GG了好久的东西... 题意是给你n个英雄,每个英雄开始为1级经验为0,最多可以升到k级并且经验一直叠加,每一级都有一个经验值上限,达到就升级.接着给你两种操作:W li r ...