TFS(Team Foundation Server) 2010的一个新特性是自动的版本控制代理配置。第一次执行版本控制操作的时候,客户端会连接到服务器,然后,它会请求代理配置信息。如果对于这个客户端来说,没有代理可用,那么它会在24小时以后再次请求代理配置信息的。
为了让代理可以在本地自动配置,客户端需要提供这个服务器在Active Directory中的“site name”。服务器使用这个数据来判断要把哪几个代理分配给这个客户端。在德国的客户端会被分配德国的代理,在南非的客户端会被分配南非的代理。这和Windows通过Add Printer Wizard把地域上离你最近的打印机显示给你使用的是同一种机制。
不幸的是,VS(Visual Studio) 2010客户端中的这个自动的版本控制代理配置机制和2005/2008版本的服务器一起使用的时候,还存在一个bug。当和旧版本的服务器一起使用的时候,无法查询代理配置信息。这主要是因为服务器不支持这个功能。但是,通过执行如下列表中的任何一个版本控制操作,你还是可以检索Active Directory中的“site name”。
* Get
* Merge
* Unshelve
* Edit
* Delete
* Undelete
* Rename
* Undo
* Add
* Branch
* Resolve
在任何情况下,从LDAP(Lightweight Directory Access Protocol )获取这个数据都会带来一定的性能损失。但是,在某些情况下,这个性能损失会特别大。一个客户报告说,检索Active Directory中的“site name”延迟了8到9分钟。如果你正在使用VS(Visual Studio) 2010和TFS(Team Foundation Server)2005/2008。你可以通过下面的注册表设置来禁用自动代理配置,你将会看到明显的性能提升。
首先,在Visual Studio中检查你的版本控制代理设置:Tools –> Options –> Source Control –> Visual Studio Team Foundation Server。如果你过去配置过一个代理,那么proxy server protocol, name,和port都应该是可用的,你不会受到这个问题的影响。(如果你想100%确认自己的代理设置是怎样的,验证代理设置的说明如下)
不使用版本控制代理:
对于那些不使用代理服务器的用户来说,他们的设置如下。所有文件都可以直接从TFS(Team Foundation Server)服务器直接下载。
以下是代码片段: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Proxy] "Enabled"="False" "Url"="http://dummy.example.com/" "AutoConfigured"="False" |
手动配置版本控制代理:
你无需进行进一步的操作。如果你喜欢的话,你可以直接检查你的注册表设置来确认他们是否和下面的注册表设置一致。(如果除了这些值,你还看到了“LastCheckTime” 或“LastConfigureTime”项,那也是正常的,他们是“无害的” )
以下是代码片段: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Proxy] "Enabled"="True" "Url"="http://yourversioncontrolproxy:8081/" "AutoConfigured"="False" |
安装临时解决方案的设置
把上面那些文本复制/粘贴到记事本,然后另存为.reg文件,执行这个文件。接着,你会收到把这个数据合并到注册表的权限警告,确认,重新启动Visual Studio后这些改变就生效了。