Ajout de liens pour les tâches

La liaison des tâches est une opération fondamentale lors de la modélisation des dépendances du projet dans les fichiers Microsoft Project (MPP / XML). Cet article montre comment ajouter et visualiser les dépendances de tâches par programmation en utilisant à la fois VSTO et ASPOSE.Tasks pour .NET.

Introduction

Dans la gestion de projet, les liens de tâches définissent comment les activités dépendent les unes des autres. Ces dépendances - telles que * finition-to-start * ou * start-to-start * - s’assurent que les tâches suivent une séquence d’exécution logique.

Lorsque vous travaillez avec le projet Microsoft par programme, vous pouvez établir ces liens en utilisant soit:

Vous trouverez ci-dessous des exemples des deux approches pour lier les tâches.

Tâches de liaison à l’aide de VSTO

L’exemple suivant montre comment créer une chaîne de dépendances * finis-to-start * à l’aide de Microsoft.office.interop.msproject.

⚠ Requires Microsoft Project to be installed and accessible on the machine.

 1Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
 2object missingValue = System.Reflection.Missing.Value;
 3
 4projectApplication.FileOpenEx(@"D:\Aspose\Migration\SampleProject.mpp",
 5    missingValue, missingValue, missingValue, missingValue,
 6    missingValue, missingValue, missingValue, missingValue,
 7    missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
 8    missingValue, missingValue, missingValue, missingValue,
 9    missingValue);
10
11Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
12
13// Add task dependencies using Finish-to-Start links
14project.Tasks.get_UniqueID(2).TaskDependencies.Add(project.Tasks.get_UniqueID(1), PjTaskLinkType.pjFinishToStart);
15project.Tasks.get_UniqueID(3).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
16project.Tasks.get_UniqueID(4).TaskDependencies.Add(project.Tasks.get_UniqueID(3), PjTaskLinkType.pjFinishToStart);
17project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(4), PjTaskLinkType.pjFinishToStart);
18project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
19
20// Print dependencies to console
21foreach (Task tsk in project.Tasks)
22{
23    foreach (TaskDependency dep in project.Tasks.get_UniqueID(tsk.ID).TaskDependencies)
24    {
25        Console.WriteLine("From ID = " + dep.From.ID + " => To ID = " + dep.To.ID);
26    }
27    Console.WriteLine("____________________________________________________________");
28}
29
30// Save and close the project
31projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);

Key Notes:

Aspose.Tasks offers a modern and streamlined way to define task dependencies programmatically without relying on Microsoft Project or COM components.

 1Project project = new Project("New Project.mpp");
 2
 3Task task1 = project.RootTask.Children.GetById(1);
 4Task task2 = project.RootTask.Children.GetById(2);
 5Task task3 = project.RootTask.Children.GetById(3);
 6Task task4 = project.RootTask.Children.GetById(4);
 7Task task5 = project.RootTask.Children.GetById(5);
 8
 9// Link the tasks
10TaskLink taskLink = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
11taskLink = project.TaskLinks.Add(task2, task3, TaskLinkType.FinishToStart);
12taskLink = project.TaskLinks.Add(task3, task4, TaskLinkType.FinishToStart);
13taskLink = project.TaskLinks.Add(task4, task5, TaskLinkType.FinishToStart);
14taskLink = project.TaskLinks.Add(task2, task5, TaskLinkType.FinishToStart);
15
16// Display links among the tasks
17TaskLinkCollection allinks = project.TaskLinks;
18foreach (TaskLink link in allinks)
19{
20    Console.WriteLine("From ID = " + link.PredTask.Get(Tsk.Id) + " => To ID = " + link.SuccTask.Get(Tsk.Id));
21    Console.WriteLine("________________________________________");
22}
23 
24project.Save("LinkTasks_out.mpp", SaveFileFormat.MPP);

Points forts:

L’API est intuitive, concise et prête pour une utilisation côté serveur dans ASP.NET, les fonctions Azure ou les services d’arrière-plan.

Table de comparaison

FeatureVSTO / InteropAspose.Tasks for .NET
Requires MS Project✅ Yes❌ No
Supported Environments🖥 Desktop only☁ Desktop, Web, Cloud, Containers
Dependency TypeCOM InteropPure .NET assembly
API Simplicity⚠ Verbose and boilerplate-heavy✅ Clean and object-oriented
Task Link ManagementTaskDependencies collectionTaskLinks collection
Cross-platform support❌ No✅ Yes

Conclusion

La liaison des tâches est essentielle pour maintenir la logique du projet. Alors que VSTO offre un accès natif au projet Microsoft, sa dépendance à l’environnement de bureau et à l’interopt COM le rend moins adapté aux applications modernes.

Aspose.tasks pour .NET fournit une alternative propre et évolutive qui simplifie la gestion des relations de tâche. Sa flexibilité et son indépendance de la plate-forme le rendent idéal pour l’intégration dans les pipelines CI / CD, les applications de serveur et les plates-formes Web.

Pour en savoir plus sur les relations de tâche ou la logique de planification, explorez:

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.