P4.NET - 如何列出用户的工作区?

时间:2011-03-02 11:03:00

标签: c# .net perforce

我不是P4.NET插件的专家,但我想在组合框中显示用户的现有工作区,以便我可以将p4.Client设置为选定的工作区。

using (var p4 = new P4Connection())
            {
                p4.Connect();
                ???               
            }

如何获取现有工作区列表? 我认为实现这一目标的命令行将是

p4 clients -m 100 -u username

3 个答案:

答案 0 :(得分:4)

如果P4.Net的行为类似于官方Perforce API,那么您可能希望运行:

p4.Run("clients", "-m 100 -u username")

或类似的。灵感来自P4Ruby文档。

答案 1 :(得分:2)

好吧我别无选择,只能回答我自己的问题,因为代码插入jhwist的答案太多了。抱歉jhwist。我别无选择。

@appinger,我希望你觉得这个答案很有帮助。花了我几个小时才弄明白这个api工作。 :)

cmbBoxPerforceWorkspaceLocation只是您工作区的组合框。我顺便使用Winforms。

我需要从Windows用户名中提取一个短名称。 Windows用户名通常以xxxx \\ username开头。在我的代码中,我从长名称中提取用户名并将其保存为短名称。如果您的网络设置不同,则此代码可能必须相应更改。

让我知道它是否适合你。

using (var p4 = new P4Connection())
            {
                p4.Connect();
                var longName = WindowsIdentity.GetCurrent().Name;
                var shortname = longName.Substring(longName.IndexOf("\\") + 1);
                var records = p4.Run("clients", "-u", shortname);

                cmbBoxPerforceWorkspaceLocation.Items.Clear();

                foreach (P4Record record in records.Records)
                {
                    cmbBoxPerforceWorkspaceLocation.Items.Add(record["client"]);
                }
            }

答案 2 :(得分:0)

P4.Net旨在与脚本API类似,而脚本API又是围绕命令行界面设计的。它绝对没有一个直观的面向对象的界面......首先是放弃了。但是如果你从命令行开始(esp -ztag标志)并将你的应用程序所需的所有数据/动作拼凑在一起,你会发现使用P4.Net非常容易。而且由于它与所有脚本API类似,如果您愿意,您会发现拾取Python或Ruby是很自然的: - )