以编程方式获取TFS版本

以编程方式获取TFS版本,tfs,tfs-sdk,Tfs,Tfs Sdk,如何以编程方式获取TFS版本 我正在尝试获取TFS管理控制台中显示的版本 我尝试了以下代码,但它返回的服务器版本为“server version:Dev14.M89-Part7”,这似乎不正确 var server = new TfsTeamProjectCollection(new Uri("http://tfs2015:8080/tfs")); server.EnsureAuthenticated(); var serverVersion = server.ServerDataProvid

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

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

我尝试了以下代码,但它返回的服务器版本为“server version: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);

我想我看到的属性是错误的…

我使用的是Microsoft.TeamFoundation.Server.dll版本号,然后是此表中的版本号。

我使用的是Microsoft.TeamFoundation.Server.dll版本号,然后是此表中的版本号。

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


查看此博客:

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


查看此博客:

另一种方法可以是从DLL中选择版本号,但需要通过PSExec、CIFS/SMB或Powershell远程处理到达服务器

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;
    }
}

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

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;
    }
}

如果链接消失,则您的答案将失去价值。请将链接中的相关部分添加到您的答案中。如果您的应用程序正在两个版本的TFS之间使用,此dll版本号方法将不起作用。如果链接消失,则您的答案将失去价值。请将链接中的相关部分添加到您的答案中。如果如果应用程序在两个TFS版本之间使用,则此dll版本号方法将不起作用。