最近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元素, 然后更改设置。