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.