以编程方式访问 TFS 帐户以获取项目名称和工作项
Programatically access TFS account to get project names and work items
我一直在尝试访问 TFS 帐户(使用 TFS SDK 以编程方式)以获取项目名称、工作项名称和每个工作项的开发时间等信息。
我无法获取项目或工作项信息,但我能够使用 class TfsTeamProjectCollection 验证和访问 TFS。
但是,使用 class TfsConfigurationServer,我始终无法对服务器进行身份验证。很遗憾,因为我在网上看到的大多数示例都使用这个 TfsConfigurationServer class.
允许我访问 TFS 的代码:
// Connect to Team Foundation Server.
NetworkCredential netCred = new NetworkCredential("myEmail@email.com", "myPassword");
BasicAuthCredential basicCred = new BasicAuthCredential(netCred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
tfsCred.AllowInteractive = false;
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("https://tfs.gfi.pt:4430/tfs/gfi/"),tfsCred);
tpc.Authenticate(); // This one works, and when I enter tpc I can see I am correctly signed-in in TFS (I can for instance check my full name)
ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(
我有 2 个问题:
- TfsConfigurationServer 和 TfsTeamProjectCollection 有什么区别?我知道第一个引导我进入服务器级别,第二个引导我进入集合级别,但是,什么是服务器级别和集合级别?
- 为什么我完全可以登录却无法获取 projectCollection(当我确定我在 TFS 上有 2 个项目时,为什么最后一行 returns 为空)?
我刚刚发现问题所在。我只需要替换最后一行:
ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(
作者:
// Get the catalog of team project collections
ReadOnlyCollection<CatalogNode> collectionNodes = tpc.CatalogNode.QueryChildren(
new [] { CatalogResourceTypes.TeamProject},
false, CatalogQueryOptions.None);
// List the team project collections
foreach (CatalogNode collectionNode in collectionNodes)
{
Console.WriteLine(collectionNode.Resource.DisplayName);
}
关于问题 #1,您可以在 Introducing the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection Classes 中找到一些原因。很快,您可以拥有许多用户数据库,即集合,由单个 TFS 实例(即服务器)管理。
我一直在尝试访问 TFS 帐户(使用 TFS SDK 以编程方式)以获取项目名称、工作项名称和每个工作项的开发时间等信息。
我无法获取项目或工作项信息,但我能够使用 class TfsTeamProjectCollection 验证和访问 TFS。
但是,使用 class TfsConfigurationServer,我始终无法对服务器进行身份验证。很遗憾,因为我在网上看到的大多数示例都使用这个 TfsConfigurationServer class.
允许我访问 TFS 的代码:
// Connect to Team Foundation Server.
NetworkCredential netCred = new NetworkCredential("myEmail@email.com", "myPassword");
BasicAuthCredential basicCred = new BasicAuthCredential(netCred);
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred);
tfsCred.AllowInteractive = false;
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("https://tfs.gfi.pt:4430/tfs/gfi/"),tfsCred);
tpc.Authenticate(); // This one works, and when I enter tpc I can see I am correctly signed-in in TFS (I can for instance check my full name)
ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(
我有 2 个问题:
- TfsConfigurationServer 和 TfsTeamProjectCollection 有什么区别?我知道第一个引导我进入服务器级别,第二个引导我进入集合级别,但是,什么是服务器级别和集合级别?
- 为什么我完全可以登录却无法获取 projectCollection(当我确定我在 TFS 上有 2 个项目时,为什么最后一行 returns 为空)?
我刚刚发现问题所在。我只需要替换最后一行:
ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(
作者:
// Get the catalog of team project collections
ReadOnlyCollection<CatalogNode> collectionNodes = tpc.CatalogNode.QueryChildren(
new [] { CatalogResourceTypes.TeamProject},
false, CatalogQueryOptions.None);
// List the team project collections
foreach (CatalogNode collectionNode in collectionNodes)
{
Console.WriteLine(collectionNode.Resource.DisplayName);
}
关于问题 #1,您可以在 Introducing the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection Classes 中找到一些原因。很快,您可以拥有许多用户数据库,即集合,由单个 TFS 实例(即服务器)管理。