Lectura y guardado de proyectos en Project Server o Project Online

Aspose.Tasks for .NET proporciona compatibilidad total para trabajar con Project Server (en las instalaciones) y Project Online (basado en la nube) aprovechando el Project Web Access (PWA) API. Esto permite a los desarrolladores crear, leer y actualizar proyectos de forma programática almacenados en entornos empresariales de gestión de proyectos.

Esta integración es útil para organizaciones que dependen de repositorios de proyectos centralizados y desean automatizar procesos como actualizaciones masivas, informes programados o sincronización de proyectos sin requerir interacción manual en Microsoft Project o Project Web App.

Gestión de proyectos con Project Server

Aspose.Tasks for .NET introduce la ProjectServerManager clase para conectarse a Project Server o Project Online. Para la autenticación, utilice la ProjectServerCredentials , SiteUrl, Username, Password directamente. Anteriormente, los desarrolladores tenían que usar el Microsoft.SharePoint.Client.Runtime assembly para obtener un AuthToken, pero esta dependencia ya no es necesaria.

Nota: Actualmente, Aspose.Tasks for .NET no admite autenticación moderna para Project Online.
La autenticación heredada debe estar habilitada en su Azure portal y Office 365 Admin Center para una integración exitosa.

Lectura de un proyecto desde Project Server

El siguiente ejemplo muestra cómo conectarse a Project Server y leer los datos de un proyecto existente:

 1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 2const string UserName = "admin@contoso.onmicrosoft.com";
 3const string Password = "MyPassword";
 4
 5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 6ProjectServerManager manager = new ProjectServerManager(credentials);
 7IEnumerable<ProjectInfo> list = manager.GetProjectList();
 8
 9foreach (var info in list)
10{
11    Project project = manager.GetProject(info.Id);
12    Console.WriteLine("{0} - {1} - {2}", info.Name, info.CreatedDate, info.LastSavedDate);
13    Console.WriteLine("Resources count: {0}", project.Resources.Count);
14
15    // an user can read the project as raw data stream
16    var stream = manager.GetProjectRawData(info.Id);
17
18    // work with raw project data
19}

Creación de un proyecto en Project Server

Este ejemplo demuestra cómo crear programáticamente un nuevo proyecto en Project Server:

 1try
 2{
 3    const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 4    const string UserName = "admin@contoso.onmicrosoft.com";
 5    const string Password = "MyPassword";
 6
 7    ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 8
 9    Project project = new Project("New Project.mpp");
10
11    ProjectServerManager manager = new ProjectServerManager(credentials);
12    manager.CreateNewProject(project);
13}
14catch (ProjectOnlineException ex)
15{
16    Console.WriteLine(ex.Message);
17}

También puede crear un proyecto en Project Online con opciones de guardado predefinidas:

1Project project = new Project("New Project.mpp");
2ProjectServerCredentials credentials = new ProjectServerCredentials("https://contoso.sharepoint.com", "admin@contoso.onmicrosoft.com", "MyPassword");
3ProjectServerManager manager = new ProjectServerManager(credentials);
4ProjectServerSaveOptions options = new ProjectServerSaveOptions
5{
6    Timeout = TimeSpan.FromSeconds(10)
7};
8manager.CreateNewProject(project, options);

Actualización de un proyecto en Project Server

Este ejemplo muestra cómo actualizar un proyecto existente en Project Server:

 1const string URL = "https://contoso.sharepoint.com";
 2const string Domain = "CONTOSO.COM";
 3const string UserName = "Administrator";
 4const string Password = "MyPassword";
 5
 6NetworkCredential windowsCredentials = new NetworkCredential(UserName, Password, Domain);
 7ProjectServerCredentials projectServerCredentials = new ProjectServerCredentials(URL, windowsCredentials);
 8try
 9{
10    ProjectServerManager manager = new ProjectServerManager(projectServerCredentials);
11
12    var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
13    if (projectInfo == null)
14    {
15        Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
16        return;
17    }
18
19    Project project = manager.GetProject(projectInfo.Id);
20    project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
21
22    Task task = project.RootTask.Children.Add("New task");
23    task.Set(Tsk.Start, new DateTime(2020, 02, 26));
24    task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
25
26    manager.UpdateProject(project);
27}
28catch (ProjectOnlineException ex)
29{
30    Console.WriteLine("Failed to update the project. Error: " + ex);
31}

También puede actualizar proyectos en Project Online con opciones de guardado, lo que le brinda mayor control sobre cómo se aplican los cambios:

 1const string SharepointDomainAddress = "https://contoso.sharepoint.com";
 2const string UserName = "admin@contoso.onmicrosoft.com";
 3const string Password = "MyPassword";
 4
 5ProjectServerCredentials credentials = new ProjectServerCredentials(SharepointDomainAddress, UserName, Password);
 6
 7try
 8{
 9    ProjectServerManager manager = new ProjectServerManager(credentials);
10
11    var projectInfo = manager.GetProjectList().FirstOrDefault(p => p.Name == "My project");
12    if (projectInfo == null)
13    {
14        Console.WriteLine("Project 'My project' not found in working store of Project Online account.");
15        return;
16    }
17
18    Project project = manager.GetProject(projectInfo.Id);
19    project.Set(Prj.FinishDate, new DateTime(2020, 03, 01));
20
21    Task task = project.RootTask.Children.Add("New task");
22    task.Set(Tsk.Start, new DateTime(2020, 02, 26));
23    task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
24
25    ProjectServerSaveOptions options = new ProjectServerSaveOptions { Timeout = TimeSpan.FromMinutes(5) };
26
27    manager.UpdateProject(project, options);
28}
29catch (ProjectOnlineException ex)
30{
31    Console.WriteLine("Failed to update the project. Error: " + ex);
32}

Al usar Aspose.Tasks for .NET, los desarrolladores pueden integrarse sin problemas con ambos Project Server y Project Online. Esto permite crear, leer y actualizar proyectos empresariales de forma programática, facilitando mantener la coherencia, automatizar flujos de trabajo e integrar los datos de los proyectos en sistemas empresariales más amplios. Dicha automatización ayuda a reducir el esfuerzo manual, mejorar la precisión y garantizar que la gestión de proyectos a nivel empresarial permanezca sincronizada y eficiente.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.