Agregar una nueva tarea con Aspose.Tasks vs vsto
Mientras trabaja con archivos de Microsoft Project (MPP/XML), a menudo necesita agregar nuevas tareas a los proyectos. Este artículo muestra cómo cargar archivos MPP en sus aplicaciones .NET y agregar nuevas tareas utilizando las API de interota VSTO tradicionales y el aspositivo moderno. Tasks para la biblioteca .NET.
Descripción general
La capacidad de administrar programáticamente las tareas es esencial en los flujos de trabajo de planificación de proyectos automatizados. Este artículo demuestra cómo insertar nuevas tareas en los archivos del proyecto de Microsoft utilizando dos enfoques:
- Microsoft Office Automation (VSTO): Depende de la aplicación de Proyecto Microsoft instalada y COM Intop.
- Aspose.Tasks para .NET: una biblioteca .NET independiente que no requiere que se instale el proyecto de Microsoft.
Ambos ejemplos ilustran el mismo escenario, agregando una sola tarea llamada " Tarea1 "
, para ayudarlo a comprender claramente las diferencias en la sintaxis, las dependencias y el modelo de programación.
Agregue una tarea usando vsto
El siguiente código demuestra cómo agregar una nueva tarea a un archivo existente ‘.mpp` usando VSSTO (Visual Studio Tools for Office). Este enfoque depende de COM Interop y requiere que el proyecto Microsoft se instale y se licencie correctamente en la máquina.
1Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
2
3object missingValue = System.Reflection.Missing.Value;
4
5projectApplication.FileOpenEx(@"C:\Project1.mpp",
6 missingValue, missingValue, missingValue, missingValue,
7 missingValue, missingValue, missingValue, missingValue,
8 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
9 missingValue, missingValue, missingValue, missingValue,
10 missingValue);
11
12Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
13
14Microsoft.Office.Interop.MSProject.Task task;
15task = project.Tasks.Add("Task1", 1);
16
17task.Start = "8/23/2012";
18task.Duration = 3 * 8 * 60; // Duration in minutes (3 working days * 8 hours/day * 60 minutes)
19task.Text1 = "Task1";
20
21projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);
Notas
- La duración debe especificarse en minutos, lo cual es menos intuitivo que usar unidades de tiempo directamente.
- La API requiere un manejo cuidadoso de los parámetros opcionales (
Missing.Value
) y la limpieza de recursos COM. - El archivo del proyecto debe abrirse mediante
FileOpenEx
y guardarse y cerrarse explícitamente medianteFileCloseAll
.
Agregar una tarea usando Aspose.Tasks para .NET
En cambio, el código a continuación muestra cómo realizar la misma tarea usando Aspose.Tasks para .NET. Esta API funciona independientemente de Microsoft Project y es ideal para aplicaciones web, servicios y entornos contenedorizados.
1Project project = new Project("New Project.mpp");
2
3Task task = project.RootTask.Children.Add("Task1");
4task.Set(Tsk.ActualStart, DateTime.Parse("23-Aug-2012"));
5
6// Set duration in hours
7task.Set(Tsk.Duration, project.GetDuration(24, TimeUnitType.Hour));
8task.Set(Tsk.DurationFormat, TimeUnitType.Day);
9
10project.Save("AddNewTask_out.xml", SaveFileFormat.XML);
Aspectos destacados
- Las tareas se crean utilizando un modelo de objetos limpio en
RootTask.Children
. - La duración se puede especificar en horas, días u otras unidades mediante
TimeUnitType
. - El método
Set
proporciona actualizaciones de las propiedades de las tareas con seguridad de tipos y específicas de cada campo. - No requiere interoperabilidad COM ni instalación de Office: el código funciona en varias plataformas.
Resumen
Aspecto | VSTO / Interop | Aspose.Tasks para .NET |
---|---|---|
Requiere MS Project | ✅ Sí | ❌ No |
Tipo de dependencia | COM (Microsoft.Office.Interop.MSProject) | .NET puro |
Compatibilidad multiplataforma | ❌ Solo Windows | ✅ Windows, Linux, macOS (vía .NET) |
Idoneidad para la implementación | ⚠ Solo escritorio/servidor | ✅ Web, contenedores, sin servidor |
Complejidad del código | ⚠ Alta (detallado, con muchos elementos repetitivos) | ✅ Simple y expresivo |
Aspose.Tasks ofrece soluciones modernas, escalables y fáciles de mantener para trabajar con formatos de Microsoft Project. Migrar desde VSTO ofrece mayor flexibilidad de implementación, mayor fiabilidad y una interfaz de API más intuitiva para desarrolladores.
Para continuar explorando, consulte las siguientes páginas: