如何通过编程方式通过代理连接到TFS?

在我的公司,我们最近为TeamFoundationServer设置了TeamFoundation代理。 我编写了一个C#应用程序,它连接到TFS以查询各种内容。 现在,我希望该应用程序也支持通过TFS代理连接。 由于我对TFS并不熟悉,所以我遇到了一些困难。 理想情况下,我希望应用程序只“知道”TFS代理并让它像普通的TFS一样运行。 这有可能吗?

我在做什么是这样的:

TfsTeamProjectCollection projects = new TfsTeamProjectCollection(new Uri(serverUriString, new NetworkCredential(username, password, domain)); 

如果serverUriString是TFS(例如“ http:// MyTfs:8080 ”),这可以正常工作。 当我用TFS代理替换它(例如“ http:// MyTfsProxy:8081 ”)时,我得到一些非特定的TeamFoundationServiceUnavailableException ,最后它表明发生了一个http 404错误。 404对我来说没有多大意义,我能够ping服务器,我可以从浏览器连接到它,Visual Studio也可以加入它。 我是否需要设置与TFS和代理的连接? 如果是,我该怎么做?

AddProxy()方法用于向TFS服务器注册代理服务器列表,以便客户端可以自动检测和使用代理服务器。

如果您只想将客户端配置为使用代理服务器,则没有属性可以执行此操作。 您必须设置注册表项或未记录的环境变量。

对于TFS2008客户端,注册表项是:

 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\SourceControl\Proxy] "Enabled"="True" "Url"="http://someproxy:8081" 

对于TFS2010客户端,注册表项是:

 [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Proxy] "Enabled"="True" "Url"="http://someproxy:8081" 

在任一TFS版本中,您都可以设置未记录的环境变量:

 System.Environment.SetEnvironmentVariable("TFSPROXY",http://someproxy:8081); 

你可以这样做:

 TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(serverName)); server.EnsureAuthenticated(); var versionControlServer = server.GetService(); versionControlServer.ConfigureProxy(proxyName);