我不是P4.NET插件的专家,但我想在组合框中显示用户的现有工作空间,以便我可以将p4.Client设置为选定的工作空间。P4.NET - 如何列出用户的工作区?
using (var p4 = new P4Connection())
{
p4.Connect();
???
}
如何获取现有工作区的列表? 我觉得在命令行来实现,这将是
p4 clients -m 100 -u username
我不是P4.NET插件的专家,但我想在组合框中显示用户的现有工作空间,以便我可以将p4.Client设置为选定的工作空间。P4.NET - 如何列出用户的工作区?
using (var p4 = new P4Connection())
{
p4.Connect();
???
}
如何获取现有工作区的列表? 我觉得在命令行来实现,这将是
p4 clients -m 100 -u username
好吧我没有别的办法,只能回答我自己的问题,因为代码太多了,无法作为评论插入jhwist的答案。对不起,jhwist。我没有选择。
@appinger,我希望你觉得这个答案有帮助。花了我几个小时来弄清楚这个API工作。 :)
cmbBoxPerforceWorkspaceLocation只是您的工作空间的组合框。顺便说一句,我正在使用Winforms。
我需要从windows用户名中提取一个短名称。 Windows用户名通常以xxxx \\用户名开头。在我的代码中,我将用户名从长名称中提取出来并保存为短名称。如果您的网络设置不同,则此代码可能必须相应更改。
让我知道它是否适合你。
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"]);
}
}
你真的期望我编码整个事情?好吧。 – jhwist 2011-03-07 15:08:07
P4.Net被设计成类似于脚本的API,而这又是围绕命令行界面设计。它绝对没有一个直观的面向对象的界面......首先关闭。但是,如果您从命令行(esp -ztag标志)开始并将应用程序需要的所有数据/操作组合在一起,则会发现使用P4.Net非常容易。由于它与所有脚本API类似,如果您愿意,您会发现自动拾取Python或Ruby :-)
Intellisense在'p4.'上提供了哪些选项?你想要像'Workspaces'这样的东西,但是我没有在这里安装代码。 – ChrisF 2011-03-02 11:35:26
如果这是如此明显,我会打我自己。 ;)没有工作区。仅用于捕获单个工作区的p4.Client。 – Houman 2011-03-02 12:10:24
还有其他什么方法可用?我试图进入http://p4dotnet.sourceforge.net/,但我得到一个500错误代码。 – ChrisF 2011-03-02 12:20:57