2012-07-27 102 views
0

我正在嘗試使用p4api.net apis開發基於C#的構建工具。我是perforce p4api.net的新手。我遵循從他們的網站下載的p4api.net庫中給出的指示,但是從未成功地在perforce上運行基本命令。我附加了一段代碼,它應該可以從Perforce獲取客戶端。如果我錯了,請糾正它。該代碼在執行GetClients()時拋出運行時錯誤(未處理的期望)。無法檢索perforce客戶端

static void Main(string[] args) 
{ 
    string uri = "perforce:1666"; 
    string user = "User1"; 

    Server server = new Server(new ServerAddress(uri)); 
    Repository rep = new Repository(server); 
    Connection con = rep.Connection; 

    con.UserName = user; 
    con.Client = new Client(); 

    // connect to the server 
    con.Connect(null); 

    // run the command against the current repository 
    IList<Client> changes = rep.GetClients(null); 
} 

任何有用的指南,執行C#文件/示例將不勝感激。

感謝, 馬杜

回答

2

你確定了異常是從GetClients來的?我成功地運行了代碼,但是當我將uri更改爲不存在的服務器時:port在con.Connect(null)處得到未處理的異常。

確認您有權訪問perforce:1666服務器和User1,並且該用戶1不需要該服務器上的密碼。

+0

嘿,非常感謝您的回覆。現在它工作正常。我所做的是,我開始執行perforce客戶端(即執行perforce ticket)並重新運行我的代碼。我該如何解決這個問題?運行構建工具的機器不會使Perforce客戶端始終處於啓動狀態並運行有效的故障單。 – 2012-07-27 13:19:37

3

門票通過p4登錄授予用戶。如果您使用P4V或其他客戶端登錄,票證應該仍然有效,直至到期,除非您明確p4註銷。您可以在連接之後並在運行命令之前在P4API.NET中創建此憑據:

 // connect to the server 
     con.Connect(null); 
     string password = "pw"; 
     Credential cred = con.Login(password, null, null); 
     con.Credential = cred; 
+0

再次感謝您的回覆。我無法提取憑證。登錄後,我獲得憑據爲空。有任何想法嗎? (在我們的環境中,Fyi請求服務器發出只有12小時有效的票據)。另一個問題是,我無法通過C#創建客戶端。任何此線索的線索。 – 2012-07-30 07:30:28

+0

如果密碼不正確,login將返回空憑證。你用你的真實密碼替換「pw」嗎?票超時不應該成爲問題。在bbaffy與我聯繫(我們正在討論的api公司) – p4bill 2012-08-02 17:26:21