Microsoft Project est un logiciel de gestion de projet populaire qui permet aux chefs de projet de gérer efficacement les projets plus facilement. Il permet aux responsables de créer des tâches et des ressources, d’attribuer des tâches aux ressources, de suivre l’avancement du projet, de gérer le budget et d’effectuer d’autres opérations liées au projet. Afin de créer et de gérer des fichiers MS Project par programmation, Microsoft fournit MS Office Automation. Cependant, avec autres lacunes, il vous oblige à installer MS Office. Pour combler cette lacune, Aspose intervient pour vous fournir une solution d’automatisation MS Project pour les applications .NET en tant que Aspose.Tasks for .NET.

Aspose.Tasks for .NET est une API riche en fonctionnalités qui vous permet de créer des fichiers MS Project (.mpp/.xml) par programmation à l’aide de C# ou VB.NET. De plus, il offre diverses fonctionnalités pour travailler avec des tâches, des ressources et des calendriers. Dans cet article, je vais vous montrer comment utiliser Aspose.Tasks for .NET pour créer des fichiers MS Project et travailler avec des tâches et des ressources à l’aide de C#. Le reste de l’article est divisé dans les sections suivantes.

Créer des fichiers MS Project à l’aide de C#

MPP est le format de fichier propriétaire de Microsoft utilisé pour les fichiers MS Project. Cependant, vous pouvez également conserver les données du projet dans des fichiers XML pour les partager entre différentes applications. La création d’un nouveau projet à partir de zéro est une tâche simple et peut être effectuée en suivant les étapes suivantes :

Les exemples de code suivants montrent comment créer des fichiers MS Project à l’aide de C#.

Enregistrer les fichiers MS Project au format MPP

// Créer un nouveau projet
Project project = new Project();

// Enregistrez-le en tant que fichier .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);

Enregistrer les fichiers MS Project au format XML

// Créer un nouveau projet
Project project = new Project();

// Enregistrez-le en tant que fichier .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

Ajouter des tâches aux fichiers MS Project à l’aide de C#

Le fichier MS Project vide est inutile sans tâches ni ressources. Voyons donc comment créer et ajouter des tâches à un projet. Une tâche peut être une tâche unique ou une tâche récapitulative contenant un groupe de sous-tâches. Voici les étapes pour ajouter des tâches à un fichier MS Project.

  • Créez et initialisez l’objet Project.
  • Ajoutez une nouvelle tâche récapitulative à la collection Tasks du projet à l’aide de la méthode Project.RootTask.Children.Add(string).
  • Ajoutez une sous-tâche à la tâche récapitulative à l’aide de la méthode Task.Children.Add(string).
  • Enregistrez le projet à l’aide de la méthode Project.Save().

L’exemple de code suivant montre comment créer et ajouter des tâches aux fichiers MS Project à l’aide de C#.

// Créer un nouveau projet
Project project = new Project();

// Ajouter une tâche et une sous-tâche
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// Enregistrer le fichier
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

L’exemple de code suivant montre comment définir différentes propriétés des tâches telles que la durée, la date/l’heure de début, etc.

// Créer un projet
Project project = new Project();

// Ajouter une tâche et définir les propriétés de la tâche
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

Ajouter des ressources aux fichiers MS Project à l’aide de C#

Les ressources sont les entités censées effectuer les tâches d’un projet. Par conséquent, un projet ne serait pas possible sans les ressources nécessaires pour y travailler. Voyons donc comment créer et ajouter des ressources à un projet. Voici les étapes pour ajouter des ressources à un fichier MS Project.

  • Créez un nouveau projet en utilisant la classe Project.
  • Ajoutez une nouvelle ressource à la collection Resources du projet à l’aide de la méthode Project.Resources.Add(string).
  • Enregistrez le projet à l’aide de la méthode Project.Save().

L’exemple de code suivant montre comment ajouter des ressources à un fichier MS Project à l’aide de C#.

// Créer un projet
Project project = new Project();

// Ajouter des ressources
Resource resource = project.Resources.Add("Rsc");

// Sauvegarder le projet
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

L’exemple de code suivant définit les propriétés d’une ressource telles qu’une date/heure de début, un type, etc.

// Créer un projet
Project project = new Project();

// Ajouter des ressources
Resource resource = project.Resources.Add("Rsc");

// Sauvegarder le projet
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

Affecter des tâches à une ressource dans un projet à l’aide de C#

Une fois que vous avez terminé d’ajouter des tâches et des ressources dans le projet, vous pouvez spécifier quelle tâche doit être exécutée par quelle ressource. Ainsi, vous affecterez la ou les tâches à chaque ressource. Voici les étapes pour affecter des tâches aux ressources d’un projet.

  • Créez ou chargez un projet à l’aide de la classe Project.
  • Ajoutez de nouvelles ressources au projet et définissez leurs propriétés telles que le format de date, la date de début, etc.
  • Ajoutez de nouvelles tâches au projet et définissez leurs propriétés telles que la date/heure de début, la durée, etc.
  • Effectuez l’affectation des tâches en ajoutant la tâche et sa ressource respective à la collection Project.ResourceAssignments.
  • Enregistrez le projet à l’aide de la méthode Project.Save().

Voici l’exemple de code complet expliquant comment créer et affecter des tâches à des ressources dans un fichier MS Project.

// Créer un projet
Project project = new Project("New Project.mpp")
{
    CalculationMode = CalculationMode.Automatic
};

// Définir les propriétés
project.Set(Prj.DateFormat, DateFormat.DateDddMmDdYy);
project.Set(Prj.StartDate, new DateTime(2019, 9, 16, 9, 0, 0));
project.Set(Prj.NewTasksAreManual, false);
project.Set(Prj.ActualsInSync, false);

// Ajouter des ressources
Resource workResource = project.Resources.Add("Servente (Work)");
workResource.Set(Rsc.Name, "Servente (Work)");
workResource.Set(Rsc.Initials, "S");
workResource.Set(Rsc.Type, ResourceType.Work);
workResource.Set(Rsc.StandardRateFormat, RateFormatType.Hour);
workResource.Set(Rsc.Code, "1503");

Resource materialResource = project.Resources.Add("Tijolo (Material)");
materialResource.Set(Rsc.Name, "Tijolo (Material)");
materialResource.Set(Rsc.Initials, "T");
materialResource.Set(Rsc.Type, ResourceType.Material);
materialResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
materialResource.Set(Rsc.Code, "21341");

// Ajouter des tâches
Task task1 = project.RootTask.Children.Add("Task - 01");
task1.Set(Tsk.IsRollup, new NullableBool(true));
task1.Set(Tsk.IsPublished, new NullableBool(false));
Task task2 = task1.Children.Add("Task - 01.01");
task2.Set(Tsk.IsRollup, new NullableBool(true));
task2.Set(Tsk.IsPublished, new NullableBool(false));
Task task3 = task2.Children.Add("Task - 01.01.001");
task3.Set(Tsk.IsEstimated, new NullableBool(false));
task3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0));
task3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.IsRollup, new NullableBool(true));
task3.Set(Tsk.IsPublished, new NullableBool(false));

// Attribuer des tâches
ResourceAssignment assignment1 = project.ResourceAssignments.Add(task3, materialResource);
assignment1.Set(Asn.Delay, project.GetDuration(40, TimeUnitType.Hour));
assignment1.Set(Asn.Start, new DateTime(2019, 9, 23, 9, 0, 0));
assignment1.Set(Asn.Finish, new DateTime(2019, 9, 27, 18, 0, 0));
ResourceAssignment assignment2 = project.ResourceAssignments.Add(task3, workResource);
assignment2.Set(Asn.Work, project.GetDuration(56, TimeUnitType.Hour));
assignment2.Set(Asn.Start, new DateTime(2019, 9, 16, 9, 0, 0));
assignment2.Set(Asn.Finish, new DateTime(2019, 9, 24, 18, 0, 0));

// pour correspondre pleinement au MPP attendu
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// Sauvegarder le projet
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

Ajouter un calendrier à un projet à l’aide de C#

Les calendriers sont également l’une des principales entités des projets qui sont utilisées pour définir le calendrier du projet. Le calendrier permet aux chefs de projet de créer un calendrier pour un projet. Voici les étapes pour ajouter un calendrier à un projet.

  • Créez ou chargez un projet à l’aide de la classe Project.
  • Ajoutez le nouveau Calendar à la collection Project.Calendars.
  • Créez le planning à l’aide de l’objet Calendar.
  • Enregistrez le projet.

L’exemple de code suivant montre comment ajouter un calendrier à un projet à l’aide de C#.

// Créer une instance de projet
Project project = new Project();

// Définir le calendrier
Calendar cal = project.Calendars.Add("Calendar1");

// Ajouter des jours ouvrables du lundi au jeudi avec des horaires par défaut
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
cal.WeekDays.Add(new WeekDay(DayType.Saturday));
cal.WeekDays.Add(new WeekDay(DayType.Sunday));

// Définir le vendredi comme jour ouvrable court
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// Définit le temps de travail. Seule la partie heure de DateTime est importante
WorkingTime wt1 = new WorkingTime();
wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
WorkingTime wt2 = new WorkingTime();
wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
myWeekDay.WorkingTimes.Add(wt1);
myWeekDay.WorkingTimes.Add(wt2);
myWeekDay.DayWorking = true;
cal.WeekDays.Add(myWeekDay);

// Sauvegarder le projet
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Télécharger ou installer

Vous pouvez télécharger Aspose.Tasks for .NET DLL ou l’installer dans votre projet à l’aide de NuGet.

Essayez gratuitement Aspose.Tasks for .NET

Aspose offre une licence temporaire gratuite pour essayer ses produits sans limitations d’essai. Vous pouvez en obtenir un ici.

Voir également