Berechnen Sie das Projekt programmgesteuert mit C#

Wir können Projektzeitpläne oder -kosten mithilfe von Berechnungsmodi berechnen, die in den Projektoptionen für Microsoft Project definiert sind. Ein Projektzeitplan zeigt das Start- und Enddatum aller Projektaufgaben. Microsoft Project ermöglicht die Projektkalkulation manuell oder automatisch. Als C#-Entwickler können wir den Projektberechnungsmodus in .NET-Anwendungen einfach einstellen und Projekteigenschaften berechnen. In diesem Artikel erfahren Sie, wie Sie ein Projekt programmgesteuert mit C# berechnen.

Folgende Themen sollen in diesem Artikel behandelt werden:

C#-API zum programmgesteuerten Berechnen von Projekten

Zum Festlegen von Projektberechnungsmodi verwenden wir die API Aspose.Tasks for .NET. Es bietet drei Projektberechnungsmodi, um die Werte abhängiger Eigenschaften zu berechnen. Diese Berechnungsmodi sind:

  • Keine – es legt nur notwendige Eigenschaften fest und berechnet Projekttermine und -kosten nicht neu.
  • Manuell – setzt nur abhängige Objekteigenschaften ohne Neuberechnung von Projektterminen und -kosten.
  • Automatisch – Projektdaten und Kosteneigenschaften werden automatisch neu berechnet.

Die API definiert die oben genannten Berechnungsmodi in der Aufzählung CalculationMode. Die Eigenschaft CalculationMode der Klasse Project ermöglicht das Festlegen oder Abrufen des Werts von CalculationMode. Die API ermöglicht auch die Bearbeitung eines bestehenden Projekts, um einige Änderungen hinzuzufügen. Darüber hinaus erleichtert es die nahtlose Durchführung grundlegender und erweiterter Projektmanagementvorgänge. Bitte downloaden Sie die DLL der API oder installieren Sie sie mit NuGet.

PM> Install-Package Aspose.Tasks

Manuelle Projektkalkulation mit C#

Wir können den Berechnungsmodus auf manuell einstellen und ihn überprüfen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der Project-Klasse.
  2. Stellen Sie als Nächstes den Berechnungsmodus auf Manuell ein.
  3. Geben Sie dann das Startdatum des Projekts an.
  4. Fügen Sie als Nächstes neue Aufgaben hinzu, z. B. Aufgabe 1 und Aufgabe 2.
  5. Lesen Sie dann die im manuellen Modus festgelegten Aufgabeneigenschaften.
  6. Initialisieren Sie danach ein Objekt der Klasse TaskLinks und verknüpfen Sie Aufgaben.
  7. Überprüfen Sie abschließend das Start- und Enddatum von Aufgabe 2.

Das folgende Codebeispiel zeigt, wie Sie ein Projekt mit C# manuell berechnen.

// Dieses Codebeispiel zeigt, wie der manuelle Projektberechnungsmodus festgelegt wird.
// Erstellen Sie eine Instanz des Projekts
Project project = new Project();

// Stellen Sie den Berechnungsmodus auf Manuell ein
project.CalculationMode = CalculationMode.Manual;

// Legen Sie das Startdatum des Projekts fest
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Fügen Sie neue Aufgaben hinzu
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Die notwendigen Eigenschaften werden im manuellen Modus gesetzt
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"));

// Verknüpfen Sie zwei Aufgaben miteinander, ihre Termine werden im manuellen Modus nicht neu berechnet
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Keine Änderung der Daten für Aufgabe 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

Automatische Projektkalkulation mit C#

Wir können den Berechnungsmodus auf automatisch einstellen und ihn überprüfen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der Project-Klasse.
  2. Stellen Sie als Nächstes den Berechnungsmodus auf Automatisch ein.
  3. Legen Sie dann das Startdatum des Projekts fest.
  4. Fügen Sie nun neue Aufgaben hinzu, z. B. Aufgabe 1 und Aufgabe 2.
  5. Initialisieren Sie danach ein Objekt der Klasse TaskLinks und verknüpfen Sie Aufgaben.
  6. Überprüfen Sie abschließend die neu berechneten Daten.

Das folgende Codebeispiel zeigt, wie das Projekt mithilfe von C# automatisch berechnet wird.

// Dieses Codebeispiel zeigt, wie der automatische Projektberechnungsmodus festgelegt wird.
// Erstellen Sie eine Instanz des Projekts
Project project = new Project();

// Stellen Sie den Berechnungsmodus auf Automatisch ein
project.CalculationMode = CalculationMode.Automatic;

// Legen Sie das Startdatum des Projekts fest
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Fügen Sie neue Aufgaben hinzu
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Aufgaben verknüpfen
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Überprüfen Sie die neu berechneten Daten
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

Kein Projektberechnungsmodus in C#

Wir können den Berechnungsmodus auf automatisch einstellen und ihn überprüfen, indem wir die folgenden Schritte ausführen:

  1. Erstellen Sie zunächst eine Instanz der Project-Klasse.
  2. Stellen Sie als Nächstes den Berechnungsmodus auf None ein.
  3. Geben Sie dann das Startdatum des Projekts an.
  4. Als nächstes fügen Sie eine neue Aufgabe hinzu, z. B. Aufgabe 1.
  5. Lesen Sie dann die Aufgabeneigenschaften.
  6. Stellen Sie danach die Aufgabendauer in Tagen ein.
  7. Überprüfen Sie abschließend das Start- und Enddatum der Aufgabe.

Das folgende Codebeispiel zeigt, wie Sie die Projektberechnung mit C# auf „Keine“ festlegen.

// Dieses Codebeispiel veranschaulicht, wie der Projektberechnungsmodus auf „Keine“ festgelegt wird.
// Erstellen Sie eine Instanz des Projekts
Project project = new Project();

// Stellen Sie den Berechnungsmodus auf „Keine“ ein
project.CalculationMode = CalculationMode.None;

// Fügen Sie eine neue Aufgabe hinzu
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Beachten Sie, dass gerade IDs nicht berechnet wurden
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"));

// Legen Sie die Dauereigenschaft fest
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

Holen Sie sich eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die Bibliothek ohne Evaluierungseinschränkungen zu testen.

Fazit

In diesem Artikel haben wir gelernt, wie Projektberechnungsmodi programmgesteuert eingestellt werden. Wir haben auch gesehen, wie Werte von abhängigen Eigenschaften in jedem Berechnungsmodus mit C# berechnet werden. Außerdem können Sie mithilfe der Dokumentation mehr über Aspose.Tasks für die .NET-API erfahren. Bei Unklarheiten können Sie uns gerne im Forum kontaktieren.

Siehe auch