1

我正在尝试通过 TFS API 设置 TFS 项目的各种版本控制权限。这是我正在使用的代码,它成功设置了给定文件夹路径的读取和签出权限:

        IIdentityManagementService ims = tpc.GetService<IIdentityManagementService>();
        TeamFoundationIdentity userIdentity = ims.ReadIdentity(IdentitySearchFactor.AccountName,
                                                "Guest",
                                                MembershipQuery.None,
                                                ReadIdentityOptions.IncludeReadFromSource);

        ISecurityService ss = tpc.GetService<ISecurityService>();
        SecurityNamespace securityNamespace = ss.GetSecurityNamespace(SecurityConstants.RepositorySecurityNamespaceGuid);

        securityNamespace.SetPermissions(folderPath, userIdentity.Descriptor, RegistryServicePermissions.AllPermissions, 0, true);

我不明白的是在 SetPermissions 的第三个参数(“允许”参数)中使用的值,以便设置各种内容,例如签入、管理分支等。MSDN 文档含糊不清。

    public abstract AccessControlEntry SetPermissions(
            string token,
            IdentityDescriptor descriptor,
            int allow,
            int deny,
            bool merge
    )

“允许”参数的描述简单地说:

    allow
    Type: System.Int32

任何帮助是极大的赞赏。

4

2 回答 2

1

allow 的内容应该是您希望对该特定身份允许的确切权限的值,例如。VersionedItemPermissions.Read

因为它是一个枚举,所以它被列为 int32,因为枚举支持 TFS 中的各种实体,即构建、版本控制、工作项跟踪等。

于 2013-02-04T17:34:30.077 回答
1

您可以像这样使用 int 参数:

    int allow = (int)Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Read;
    int deny = (int)(Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.AdminProjectRights |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Checkin |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.CheckinOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.PendChange |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Label |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.ReviseOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.LabelOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Lock |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.ManageBranch |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.Merge |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.UndoOther |
                        Microsoft.TeamFoundation.VersionControl.Common.VersionedItemPermissions.UnlockOther);
于 2016-01-15T19:20:50.730 回答