以编程方式获取TFS版本

时间:2015-11-26 20:07:22

标签: tfs tfs-sdk

如何以编程方式获取TFS版本?

我正在尝试获取TFS管理控制台中显示的版本。

TFS Admin console

我尝试了以下代码,但它将服务器版本返回为“服务器版本:Dev14.M89-Part7”,这似乎不正确。

var server = new TfsTeamProjectCollection(new Uri("http://tfs2015:8080/tfs"));
server.EnsureAuthenticated();
var serverVersion = server.ServerDataProvider.ServerVersion;
Console.WriteLine("Server Version: {0}", serverVersion);

我想我正在寻找错误的财产......

3 个答案:

答案 0 :(得分:1)

我正在使用Microsoft.TeamFoundation.Server.dll版本号,然后使用此link中的表格。

答案 1 :(得分:1)

不幸的是,你可以调用一些统一的方法,只是告诉你“你正在与TFS的X版进行通信”。为了确定您正在与之交谈的服务器版本,我们将使用有关查询服务的主体以及有关每个版本中可用服务的一些知识。

查看此博客:http://blogs.msdn.com/b/taylaf/archive/2010/01/05/determining-the-tfs-server-version-using-client-apis.aspx

答案 2 :(得分:1)

另一种方法是从DLL中选择版本号,但需要通过PSExec,CIFS / SMB或Powershell Remoting到达服务器。

C#代码应该类似于

using (var tfsBaseKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\TeamFoundationServer"))
{
    var versionKeys = tfsBaseKey.GetSubKeyNames();
    double dummy;
    double maxVersion = versionKeys.Max(x => double.TryParse(x, out dummy) ? dummy : 0.0);
    var latestVersionKey = maxVersion.ToString("#.0");
    using (var tfsKey = tfsBaseKey.OpenSubKey(latestVersionKey))
    {
        string tfsInstallPath = tfsKey.GetValue("InstallPath").ToString();
        string refAssemblyPath = Path.Combine(tfsInstallPath, @"Application Tier\Web Services\bin\Microsoft.TeamFoundation.Server.Core.dll");
        var refAssembly = Assembly.ReflectionOnlyLoadFrom(refAssemblyPath);
        var fileVer = refAssembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).FirstOrDefault() as AssemblyFileVersionAttribute;

        return fileVersion.Version;
    }
}