Lire les tâches et les ressources
En travaillant avec des fichiers MPP, vous devrez peut-être lire des tâches et des ressources de votre projet. Cet article donne un aperçu pratique de la façon de lire les données du projet à l’aide de VSTO et Aspose.Tasks pour .NET.
Introduction
La lecture des tâches et des ressources est souvent la première étape de la création d’analyses de projets, de générer des rapports ou de valider l’intégrité du projet. Avec Microsoft Project Files (MPP), cela peut être réalisé en utilisant soit:
- VSTO (Visual Studio Tools for Office) - nécessite Microsoft Project et Com Interop.
- Aspose.tasks pour .NET - Une API autonome pour travailler avec les données du projet sans compter sur le projet Microsoft.
Cet article décrit comment extraire les informations sur les tâches et les ressources dans les deux approches.
Lire des tâches et des ressources à l’aide de VSTO
Pour accéder aux données des tâches et des ressources à l’aide de VSTO:
- Créez un nouveau projet dans Visual Studio.
- Ajoutez une référence à Microsoft Project 12.0 Bibliothèque d’objets de l’onglet com.
- Importez l’espace de noms `Microsoft.office.interop.msproject.
- Utilisez l’exemple de code suivant.
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();
Notes
- Tasks and resources are accessed through
project.Tasks
andproject.Resources
. - Each resource’s type is identified using
PjResourceTypes
. - VSTO depends on Microsoft Project being installed and available at runtime.
Read Tasks and Resources Using Aspose.Tasks for .NET
To achieve the same using Aspose.Tasks for .NET:
- Create a new Visual Studio project.
- Add a reference to Aspose.Tasks via the .NET tab.
- Import the
Aspose.Tasks
namespace. - Use the code example below.
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}
Points forts
- L’objet
Project 'donne accès à
roottask.children` pour la traversée des tâches. - Les ressources sont accessibles via la collection «Ressources».
- Aspose.tasks prend également en charge des fonctionnalités avancées telles que les calendriers, les attributs étendus et les lignes de base - sans projet Microsoft.
Table de comparaison
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 |
Résumé
L’extraction des tâches et des ressources est une capacité de base lors de la travail avec des fichiers de projet Microsoft. Bien que VSTO offre un moyen de travailler avec les fichiers de projet via COM Interop, il souffre de scénarios de déploiement limités et de restrictions de plate-forme.
Aspose.Tasks for .NET offre une alternative légère, multiplateforme et maintenable pour la lecture et le traitement des données du projet - ce qui la rend idéale pour les applications d’entreprise modernes et les pipelines d’automatisation.
Pour continuer à explorer l’accès aux données du projet avec Aspose.Tasks, voir: