3

我想以编程方式将用户添加到团队项目。我发现解决方案是这样的:

IGroupSecurityService gss = (IGroupSecurityService)objTFS.GetService(typeof(IGroupSecurityService));
Identity identity = gss.ReadIdentity(SearchFactor.AccountName, "Group name", QueryMembership.None);
gss.AddMemberToApplicationGroup(groupProject.Sid, member.Sid);

但这仅适用于 TFS 已知的组/用户。

我想将 Windows 帐户添加到 TFS

例如:

Windows 帐户名称:TestTFS

密码:123456

然后以编程方式将 TestTFS 添加到 TFS。

我知道有一个名为 TeamFoundation Administration Tool 的工具可以做到这一点,但我不想使用它。

4

3 回答 3

6

在 TFS2012 中,IGroupSecurityService被标记为过时并替换为IIdentityManagementService.

您可以使用IIdentityManagementService.ReadIdentity()withIIdentityManagementService.AddMemberToApplicationGroup()将 Windows 用户添加到 TFS 组,即使这些 Windows 用户还不知道 TFS。

这是通过指定ReadIdentityOptions.IncludeReadFromSource选项来完成的。

下面是将 Windows 用户添加VSALM\BarryFabrikam Fiber Web Team(TFS 组)的示例,在FabrikamFiber团队项目中,在http://vsalm:8080/tfs/FabrikamFiberCollection服务器/集合中。

您将需要添加对以下内容的引用:Microsoft.TeamFoundation.ClientMicrosoft.TeamFoundation.Common

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using System;

namespace ConsoleApplication1
{
   class Program
        {
        static void Main(string[] args)
        {
            var tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://vsalm:8080/tfs/FabrikamFiberCollection"));

            var ims = tpc.GetService<IIdentityManagementService>();

            var tfsGroupIdentity = ims.ReadIdentity(IdentitySearchFactor.AccountName,
                                                    "[FabrikamFiber]\\Fabrikam Fiber Web Team",
                                                    MembershipQuery.None,
                                                    ReadIdentityOptions.IncludeReadFromSource);            

            var userIdentity = ims.ReadIdentity(IdentitySearchFactor.AccountName,
                                                    "VSALM\\Barry",
                                                    MembershipQuery.None,
                                                    ReadIdentityOptions.IncludeReadFromSource);

            ims.AddMemberToApplicationGroup(tfsGroupIdentity.Descriptor, userIdentity.Descriptor);
        }
    }
}
于 2013-02-01T00:06:10.983 回答
2

我有同样的问题,最后下面的代码工作

            NTAccount f = new NTAccount(userName);
            SecurityIdentifier s = (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier));
            string userSid = s.ToString();

命名空间:using System.Security.Principal;

于 2012-10-25T11:27:17.920 回答
1

为了通过 TFS API 执行此操作,您需要访问 2 个级别的信息。

  1. 您要添加的用户的 sid,

  2. 您要将用户添加到的组的 sid => 您在帖子中显示的代码将为您提供您要将用户添加到的组的 ID。

我发现了 2 个带有示例代码的链接,我认为这对您有帮助,

于 2011-11-05T10:15:14.453 回答