using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Windows.Forms; using System.Web.Services.Protocols; using PSLibrary = Microsoft.Office.Project.Server.Library; namespace Microsoft.Office.Project.Samples.UpdateResources { class Program { static void Main(string[] args) { const string PROJECT_SERVER_URI = "http://ServerName/ProjectServerName/"; const string RESOURCE_SERVICE_PATH = "_vti_bin/psi/resource.asmx"; try { // Set up the resource object and dataset ResourceWebSvc.Resource resourceSvc = new ResourceWebSvc.Resource(); ResourceWebSvc.ResourceDataSet resourceDs = new ResourceWebSvc.ResourceDataSet(); resourceSvc.Url = PROJECT_SERVER_URI + RESOURCE_SERVICE_PATH; resourceSvc.Credentials = CredentialCache.DefaultCredentials; // Read read all the resources resourceDs = resourceSvc.ReadResources(string.Empty, false); // Check out the first resource for updating. // - This assumes the resource is checked in. // - An error occurs if the resource is already checked out. resourceSvc.CheckOutResources(new Guid[] { resourceDs.Resources[0].RES_UID }); // Update the resource name of the first row. Console.WriteLine ("Modifying resource " + resourceDs.Resources[0].RES_ID + " (" + resourceDs.Resources[0].RES_NAME + ")"); resourceDs.Resources[0].RES_NAME += " Modified at: " + DateTime.Now.ToShortTimeString(); // Send the update to the server and automatically check in the changed row resourceSvc.UpdateResources(resourceDs, false, true); } catch (System.Web.Services.Protocols.SoapException ex) { string errMess = ""; PSLibrary.PSClientError error = new PSLibrary.PSClientError(ex); PSLibrary.PSErrorInfo[] errors = error.GetAllErrors(); for (int j = 0; j < errors.Length; j++) errMess = errMess + errors[j].ErrId.ToString() + "\n"; errMess = errMess + "\n" + ex.Message.ToString(); MessageBox.Show(errMess, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (WebException ex) { string message = ex.Message.ToString() + "\n\nLog on, or check the Project Server Queuing Service"; MessageBox.Show(message, "Project Creation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }