65.9K
CodeProject 正在变化。 阅读更多。
Home

连接到 Team Foundation Server 2008

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2009年9月8日

CPOL

2分钟阅读

viewsIcon

24853

downloadIcon

395

一个简单的 WinForms 应用程序,让您连接到 Team Foundation Server 2008。

引言

我写这篇文章是因为我看到了需要能够将 Visual Studio 以外的应用程序连接到 Team Foundation Server。 想象一下一个外部资源编辑器,它可以让您更轻松地在 Visual Studio 中创建和编辑资源。 现在,如果没有与 Team Foundation Server 的连接,对解决方案中文件的任何编辑都将与您的团队同步。

我们需要下载 Visual Studio SDK 以了解更多信息。 所需的库可以与我为您添加的源代码一起下载。

这是一个简单的 WinForms 应用程序,除了帮助创建与 Team Foundation Server 的连接之外,什么也没做。

背景

我下载了 Uwe Keim 创建的 Zeta Resource editor,发现它是一个用于编辑 Visual Studio 中资源的非常有用的工具。 但是,由于它未连接到 Team Foundation Server,因此 Team Foundation Server 不知道所做的更改,并且签入将不会将更新上传到服务器。 他对此一无所知,并问我如何连接到服务器,所以就这样了

Using the Code

让我们开始吧。

首先,我们需要创建一个包含几个文本框和一个用于连接、断开连接和关闭窗体的菜单的窗体。 文本框需要包含诸如用户名和密码以及您的 Team Foundation Server 所在的域名之类的信息。 还需要一些其他参数,例如端口号以及我们想要使用的协议(HTTP 或 HTTPS)。

最后但并非最不重要的一点是,我们还需要您的团队服务器的名称,如下所示

Windows form

现在我们要做的第一件事是编写 Connect 菜单项后面的事件处理程序

private void connectToolStripMenuItem_Click(object sender, EventArgs e)
{
    try
    {
        _teamFoundationServer = TeamFoundationServer();
        _teamFoundationServer.Authenticate();
        if (_teamFoundationServer.HasAuthenticated)
        {
            toolStripStatusLabel.Text = "Connected to: " + _teamFoundationServer.Name;
            return;
        }
        throw new Exception("Failed to Authenticate for: " + _teamFoundationServer.Name);
    }
    catch (Exception exp)
    {
        toolStripStatusLabel.Text = "Failed to connect to: " + 
                                    CreateTeamserverUrl(txtTfs.Text);
        MessageBox.Show(exp.Message);
    }

}

辅助方法

CreateTeamserverUrl 方法创建一个指向服务器的完全限定 URL。

完成此操作后,我们需要创建允许连接的网络凭据。 我们创建一个 NetworkCredential 对象的新实例,传入我们的用户名、密码以及 Team Foundation Server 的安全性所管理的域名。

现在我们可以通过传递网络凭据和指向服务器的完全限定 URL 来创建 TeamFoundationServer 对象的一个实例:TeamFoundationServer 对象位于 Microsoft.TeamFoundation.Client 命名空间中。

创建实例的其他方法是使用 TeamFoundationServerFactory.GetServer(string url) 方法,该方法也将返回 TeamFoundationServer 对象的一个实例。

MSDN 文章中描述了 TeamFoundationServer 类、其方法和事件:http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.client.teamfoundationserver(VS.80).aspx

/// <summary>
/// Creating an Instance of the TeamFoundationServer Object
/// </summary>
/// <returns>An Instance of the TeamFoundationServer Object</returns>
private TeamFoundationServer TeamFoundationServer()
{
    // Get a reference to our Team Foundation Server. 
    String tfsUrl = CreateTeamserverUrl(txtTfs.Text);
    string userName = txtUsername.Text;
    string password = txtPassword.Text;
    string domain = txtDomain.Text;
    var nwCred = new NetworkCredential(userName, password, domain);
    return new TeamFoundationServer(tfsUrl, nwCred);
}
/// <summary>
/// Created a fully qualified url to the teamfoundation server based on the users input
/// </summary>
/// <param name="server">The name of the teamfoundation server</param>
/// <returns>The fully qualified url to the teamfoundation server</returns>
private string CreateTeamserverUrl(string server)
{
    var retValue = "http://";
    if (rbHttps.Checked)
    {
        retValue = "https://";
    }
    retValue += server + ":" + txtPort.Text;
    return retValue;
}

就这么简单,您现在所要做的就是运行该应用程序,输入实际值以连接到您的服务器,然后我们就可以开始了。

© . All rights reserved.