Calculer le projet par programmation à l'aide de C#

Nous pouvons calculer les échéanciers ou les coûts du projet à l’aide des modes de calcul définis dans les options de projet pour Microsoft Project. Un calendrier de projet indique la date de début et de fin de toutes les tâches du projet. Microsoft Project permet le calcul du projet manuellement ou automatiquement. En tant que développeur C#, nous pouvons facilement définir le mode de calcul du projet dans les applications .NET et calculer les propriétés du projet. Dans cet article, nous allons apprendre à calculer un projet par programmation à l’aide de C#.

Les sujets suivants seront traités dans cet article :

API C# pour calculer le projet par programme

Pour définir les modes de calcul du projet, nous utiliserons l’API Aspose.Tasks for .NET. Il fournit trois modes de calcul de projet, pour calculer les valeurs des propriétés dépendantes. Ces modes de calcul sont :

  • Aucun - il définit uniquement les propriétés nécessaires et ne recalcule pas les dates et les coûts du projet.
  • Manuel - il définit uniquement les propriétés des objets dépendants sans recalculer les dates et les coûts du projet.
  • Automatique - il recalcule automatiquement les dates du projet et les propriétés de coût.

L’API définit les modes de calcul mentionnés ci-dessus dans l’énumération CalculationMode. La propriété CalculationMode de la classe Project permet de définir ou d’obtenir la valeur de CalculationMode. L’API permet également de manipuler un projet existant afin d’y apporter quelques modifications. De plus, il facilite l’exécution transparente des opérations de gestion de projet de base et avancées. Veuillez soit télécharger la DLL de l’API ou l’installer à l’aide de NuGet.

PM> Install-Package Aspose.Tasks

Calcul de projet manuel à l’aide de C#

Nous pouvons définir le mode de calcul sur manuel et le vérifier en suivant les étapes ci-dessous :

  1. Tout d’abord, créez une instance de la classe Project.
  2. Ensuite, réglez le mode de calcul sur Manuel.
  3. Ensuite, indiquez la date de début du projet.
  4. Ensuite, ajoutez de nouvelles tâches, par exemple, Tâche 1 et Tâche 2.
  5. Ensuite, lisez les propriétés de la tâche définies en mode manuel.
  6. Après cela, initialisez un objet de la classe TaskLinks et liez les tâches.
  7. Enfin, vérifiez la date de début et de fin de la tâche 2.

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

// Cet exemple de code montre comment définir le mode de calcul de projet manuel.
// Créer une instance du projet
Project project = new Project();

// Définir le mode de calcul sur Manuel
project.CalculationMode = CalculationMode.Manual;

// Définir la date de début du projet
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Ajouter de nouvelles tâches
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Les propriétés nécessaires sont définies en mode manuel
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));

// Lier deux tâches entre elles leurs dates ne seront pas recalculées en mode manuel
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Aucun changement dans les dates de la tâche 2
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True

Calcul de projet automatique à l’aide de C#

Nous pouvons définir le mode de calcul sur automatique et le vérifier en suivant les étapes ci-dessous :

  1. Tout d’abord, créez une instance de la classe Project.
  2. Ensuite, définissez le mode de calcul sur Automatique.
  3. Ensuite, définissez la date de début du projet.
  4. Maintenant, ajoutez de nouvelles tâches, par exemple, Tâche 1 et Tâche 2.
  5. Après cela, initialisez un objet de la classe TaskLinks et liez les tâches.
  6. Enfin, vérifiez les dates recalculées.

L’exemple de code suivant montre comment calculer automatiquement le projet à l’aide de C#.

// Cet exemple de code montre comment définir le mode de calcul automatique du projet.
// Créer une instance du projet
Project project = new Project();

// Définir le mode de calcul sur Automatique
project.CalculationMode = CalculationMode.Automatic;

// Définir la date de début du projet
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Ajouter de nouvelles tâches
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Lier les tâches
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Vérifier les dates recalculées
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True

Pas de mode de calcul de projet en C#

Nous pouvons définir le mode de calcul sur automatique et le vérifier en suivant les étapes ci-dessous :

  1. Tout d’abord, créez une instance de la classe Project.
  2. Ensuite, définissez le mode de calcul sur Aucun.
  3. Ensuite, indiquez la date de début du projet.
  4. Ensuite, ajoutez une nouvelle tâche, par exemple, Tâche 1.
  5. Ensuite, lisez les propriétés de la tâche.
  6. Après cela, définissez la durée de la tâche en jours.
  7. Enfin, vérifiez la date de début et de fin de la tâche.

L’exemple de code suivant montre comment définir le calcul du projet sur aucun à l’aide de C#.

// Cet exemple de code montre comment définir le mode de calcul du projet sur Aucun.
// Créer une instance du projet
Project project = new Project();

// Définir le mode de calcul sur Aucun
project.CalculationMode = CalculationMode.None;

// Ajouter une nouvelle tâche
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Notez que même les identifiants n'ont pas été calculés
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));

// Définir la propriété de durée
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue  : True
Task Finish Equals DateTime.MinValue  : True

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour essayer la bibliothèque sans limitations d’évaluation.

Conclusion

Dans cet article, nous avons appris à définir par programme les modes de calcul du projet. Nous avons également vu comment les valeurs des propriétés dépendantes sont calculées dans chaque mode de calcul à l’aide de C#. En outre, vous pouvez en savoir plus sur l’API Aspose.Tasks for .NET en utilisant la documentation. En cas d’ambiguïté, n’hésitez pas à nous contacter sur le forum.

Voir également