Lectura de tareas y recursos
Mientras trabaja con archivos MPP, es posible que deba leer tareas y recursos de su proyecto. Este artículo proporciona una visión general práctica de cómo leer los datos del proyecto utilizando tanto VSTO como Aspose.Tasks para .NET.
Introducción
Leer tareas y recursos es a menudo el primer paso en la creación de análisis de proyectos, generar informes o validar la integridad del proyecto. Con los archivos del proyecto Microsoft (MPP), esto se puede lograr utilizando:
- VSTO (Visual Studio Tools for Office) - Requiere Microsoft Project y COM Interop.
- Aspose.Tasks para .NET - Una API independiente para trabajar con los datos del proyecto sin confiar en el proyecto Microsoft.
Este artículo describe cómo extraer información de tareas y recursos en ambos enfoques.
Leer tareas y recursos utilizando vsto
Para acceder a los datos de tareas y recursos utilizando vsto:
- Crea un nuevo proyecto en Visual Studio.
- Agregue una referencia a Biblioteca de objetos del Proyecto Microsoft 12.0 Desde la pestaña Com.
- Importe el espacio de nombres
Microsoft.Office.interop.MsProject
. - Use el siguiente código de muestra.
1// Create Application object
2Application projectApplication = new ApplicationClass();
3object missingValue = System.Reflection.Missing.Value;
4
5// Open MPP file
6projectApplication.FileOpenEx(@"C:\Project1.mpp",
7 missingValue, missingValue, missingValue, missingValue,
8 missingValue, missingValue, missingValue, missingValue,
9 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
10 missingValue, missingValue, missingValue, missingValue,
11 missingValue);
12
13Project project = projectApplication.ActiveProject;
14
15// Read all tasks
16foreach (Task task in project.Tasks)
17{
18 Console.WriteLine("Reading Task: " + task.Name);
19 Console.WriteLine("ID: " + task.ID);
20 Console.WriteLine("Start: " + task.Start);
21 Console.WriteLine("Finish: " + task.Finish);
22 Console.WriteLine("===========================\n");
23}
24
25// Read all resources
26foreach (Resource resource in project.Resources)
27{
28 string resourceType = resource.Type switch
29 {
30 PjResourceTypes.pjResourceTypeCost => "Cost",
31 PjResourceTypes.pjResourceTypeMaterial => "Material",
32 PjResourceTypes.pjResourceTypeWork => "Work",
33 _ => "Unknown"
34 };
35
36 Console.WriteLine("Reading Resource: " + resource.Name);
37 Console.WriteLine("ID: " + resource.ID);
38 Console.WriteLine("Type: " + resourceType);
39 Console.WriteLine("===========================\n");
40}
41
42Console.ReadLine();
Notas
- Se accede a las tareas y recursos mediante
project.Tasks
yproject.Resources
. - El tipo de cada recurso se identifica mediante
PjResourceTypes
. - VSTO depende de que Microsoft Project esté instalado y disponible en tiempo de ejecución.
Leer tareas y recursos con Aspose.Tasks para .NET
Para lograr lo mismo con Aspose.Tasks para .NET:
- Cree un nuevo proyecto de Visual Studio.
- Agregue una referencia a Aspose.Tasks mediante la pestaña .NET.
- Importe el espacio de nombres
Aspose.Tasks
. - Utilice el siguiente ejemplo de código.
1Project project = new Project("New Project.mpp");
2
3// Load all tasks
4TaskCollection allTasks = project.RootTask.Children;
5
6// Loop through each task and read information related to tasks
7foreach (Task task in allTasks)
8{
9 Console.WriteLine("Reading Task " + task.Get(Tsk.Name));
10 Console.WriteLine("ID: " + task.Get(Tsk.Id));
11 Console.WriteLine("Start: " + task.Get(Tsk.Start));
12 Console.WriteLine("Finish: " + task.Get(Tsk.Finish));
13}
14
15// Loop through each resource and read information related to resources
16foreach (Resource resource in project.Resources)
17{
18 string resourceType = null;
19 switch (resource.Get(Rsc.Type))
20 {
21 case ResourceType.Material:
22 resourceType = "Material";
23 break;
24 case ResourceType.Work:
25 resourceType = "Work";
26 break;
27 default:
28 resourceType = "Cost";
29 break;
30 }
31
32 Console.WriteLine("Reading Resource " + resource.Get(Rsc.Name));
33 Console.WriteLine("ID: " + resource.Get(Rsc.Id));
34 Console.WriteLine("Type: " + resourceType);
35}
Reflejos
- El objeto
Project
proporciona acceso aRoottask.Children
para el recorrido de tareas. - Se accede a los recursos a través de la colección ‘Recursos’.
- Aspose.Tasks también admite características avanzadas como calendarios, atributos extendidos y líneas de base, sin el proyecto Microsoft.
Tabla de comparación
Feature | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires Microsoft Project | ✅ Yes | ❌ No |
Platform | 🖥 Windows only | ✅ Cross-platform |
Access Model | COM-based | Pure .NET API |
Ease of Deployment | ⚠ Limited | ✅ Self-contained |
Reading Resources | project.Resources | project.Resources |
Reading Tasks | project.Tasks | project.RootTask.Children |
Resumen
Extraer tareas y recursos es una capacidad fundamental cuando se trabaja con los archivos del proyecto de Microsoft. Si bien VSTO proporciona una forma de trabajar con los archivos de proyectos a través de COM INETOP, sufre de escenarios de implementación limitados y restricciones de plataforma.
Aspose.Tasks for .NET ofrece una alternativa ligera, multiplataforma y mantenible para leer y procesar datos del proyecto, lo que lo hace ideal para aplicaciones empresariales modernas y tuberías de automatización.
Para continuar explorando el acceso a los datos del proyecto con Aspose.Tasks, consulte: