Beräkna projekt programmerat med C#

Vi kan beräkna projektscheman eller kostnader med hjälp av beräkningslägen som definieras i Projektalternativ för Microsoft Project. Ett projektschema visar start- och slutdatum för alla projektuppgifter. Microsoft Project tillåter projektberäkningen manuellt eller automatiskt. Som C#-utvecklare kan vi enkelt ställa in projektberäkningsläge i .NET-applikationer och beräkna projektegenskaper. I den här artikeln kommer vi att lära oss hur man beräknar ett projekt programmatiskt med C#.

Följande ämnen ska behandlas i den här artikeln:

C# API för att beräkna projekt programmerat

För att ställa in projektberäkningslägen kommer vi att använda Aspose.Tasks for .NET API. Den tillhandahåller tre projektberäkningslägen för att beräkna värdena för beroende egenskaper. Dessa beräkningssätt är:

  • Inga – den anger bara nödvändiga egenskaper och räknar inte om projektdatum och kostnader.
  • Manuell – den ställer endast in beroende objektegenskaper utan omräkning av projektdatum och kostnader.
  • Automatisk – den räknar om projektdatum och kostnadsegenskaper automatiskt.

API definierar ovan nämnda beräkningslägen i CalculationMode uppräkningen. Egenskapen CalculationMode för klassen Project tillåter att ställa in eller hämta värdet för CalculationMode. API:et tillåter också att manipulera ett befintligt projekt för att lägga till några ändringar. Dessutom underlättar det att utföra grundläggande såväl som avancerade projektledningsoperationer sömlöst. Vänligen antingen ladda ner API:ets DLL eller installera den med NuGet.

PM> Install-Package Aspose.Tasks

Manuell projektberäkning med C#

Vi kan ställa in beräkningsläget till manuellt och verifiera det genom att följa stegen nedan:

  1. Skapa först en instans av klassen Project.
  2. Ställ sedan in beräkningsläget på Manuell.
  3. Ange sedan projektets startdatum.
  4. Lägg sedan till nya uppgifter, t.ex. uppgift 1 och uppgift 2.
  5. Läs sedan uppgiftsegenskaper som ställts in i manuellt läge.
  6. Efter det, initiera ett objekt i klassen TaskLinks och länkuppgifter.
  7. Slutligen, verifiera start- och slutdatumet för uppgift 2.

Följande kodexempel visar hur man manuellt beräknar ett projekt med C#.

// Detta kodexempel visar hur man ställer in manuellt projektberäkningsläge.
// Skapa en instans av projektet
Project project = new Project();

// Ställ in beräkningsläget på Manuell
project.CalculationMode = CalculationMode.Manual;

// Ställ in projektstartdatum
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Lägg till nya uppgifter
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// De nödvändiga egenskaperna ställs in i manuellt läge
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"));

// Länka två uppgifter samman deras datum ska inte räknas om i manuellt läge
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Ingen förändring i uppgift 2 datum
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

Automatisk projektberäkning med C#

Vi kan ställa in beräkningsläget till automatiskt och verifiera det genom att följa stegen nedan:

  1. Skapa först en instans av klassen Project.
  2. Ställ sedan in beräkningsläget på Automatisk.
  3. Ange sedan projektets startdatum.
  4. Lägg nu till nya uppgifter, t.ex. uppgift 1 och uppgift 2.
  5. Efter det, initiera ett objekt i klassen TaskLinks och länkuppgifter.
  6. Slutligen, verifiera de omräknade datumen.

Följande kodexempel visar hur man beräknar projektet automatiskt med C#.

// Detta kodexempel visar hur man ställer in automatiskt projektberäkningsläge.
// Skapa en instans av projektet
Project project = new Project();

// Ställ in beräkningsläget på Automatisk
project.CalculationMode = CalculationMode.Automatic;

// Ställ in projektstartdatum
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Lägg till nya uppgifter
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Länkuppgifter
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Verifiera de omräknade datumen
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

Inget projektberäkningsläge i C#

Vi kan ställa in beräkningsläget till automatiskt och verifiera det genom att följa stegen nedan:

  1. Skapa först en instans av klassen Project.
  2. Ställ sedan in beräkningsläget på Ingen.
  3. Ange sedan projektets startdatum.
  4. Lägg sedan till en ny uppgift, t.ex. uppgift 1.
  5. Läs sedan aktivitetens egenskaper.
  6. Ställ sedan in uppgiftens varaktighet i dagar.
  7. Slutligen, verifiera start- och slutdatumet för uppgiften.

Följande kodexempel visar hur man ställer in projektberäkning till ingen med C#.

// Det här kodexemplet visar hur man ställer in projektberäkningsläge till Ingen.
// Skapa en instans av projektet
Project project = new Project();

// Ställ in beräkningsläget på Ingen
project.CalculationMode = CalculationMode.None;

// Lägg till en ny uppgift
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Observera att även id inte beräknades
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"));

// Ange durationsegenskap
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

Skaffa en gratis licens

Du kan få en gratis tillfällig licens för att prova biblioteket utan utvärderingsbegränsningar.

Slutsats

I den här artikeln har vi lärt oss hur man ställer in projektberäkningslägen programmatiskt. Vi har också sett hur värden på beroende egenskaper beräknas i varje beräkningsläge med C#. Dessutom kan du lära dig mer om Aspose.Tasks för .NET API med hjälp av dokumentationen. I händelse av oklarheter, var god kontakta oss på forumet.

Se även