Calcola il progetto a livello di codice usando C#

Possiamo calcolare le pianificazioni o i costi del progetto utilizzando le modalità di calcolo definite in Opzioni progetto per Microsoft Project. Una pianificazione del progetto mostra la data di inizio e di fine di tutte le attività del progetto. Microsoft Project consente il calcolo del progetto manualmente o automaticamente. In qualità di sviluppatore C#, possiamo impostare facilmente la modalità di calcolo del progetto nelle applicazioni .NET e calcolare le proprietà del progetto. In questo articolo impareremo come calcolare un progetto a livello di codice usando C#.

In questo articolo verranno trattati i seguenti argomenti:

API C# per calcolare il progetto a livello di codice

Per impostare le modalità di calcolo del progetto, utilizzeremo l’API Aspose.Tasks for .NET. Fornisce tre modalità di calcolo del progetto, per calcolare i valori delle proprietà dipendenti. Queste modalità di calcolo sono:

  • Nessuno: imposta solo le proprietà necessarie e non ricalcola le date e i costi del progetto.
  • Manuale: imposta solo le proprietà degli oggetti dipendenti senza ricalcolare le date e i costi del progetto.
  • Automatico: ricalcola automaticamente le date del progetto e le proprietà dei costi.

L’API definisce le modalità di calcolo sopra menzionate nell’enumerazione CalculationMode. La proprietà CalculationMode della classe Project consente di impostare o ottenere il valore di CalculationMode. L’API consente anche di manipolare un progetto esistente per aggiungere alcune modifiche. Inoltre, facilita l’esecuzione di operazioni di gestione dei progetti di base e avanzate senza interruzioni. Si prega di scaricare la DLL dell’API o installarla utilizzando NuGet.

PM> Install-Package Aspose.Tasks

Calcolo manuale del progetto utilizzando C#

Possiamo impostare la modalità di calcolo su manuale e verificarla seguendo i passaggi indicati di seguito:

  1. Innanzitutto, crea un’istanza della classe Project.
  2. Quindi, imposta la modalità di calcolo su Manuale.
  3. Quindi, specificare la data di inizio del progetto.
  4. Quindi, aggiungi nuove attività, ad esempio Attività 1 e Attività 2.
  5. Quindi, leggi le proprietà dell’attività impostate in modalità manuale.
  6. Successivamente, inizializza un oggetto della classe TaskLinks e collega le attività.
  7. Infine, verifica la data di inizio e fine dell’attività 2.

L’esempio di codice seguente mostra come calcolare manualmente un progetto usando C#.

// Questo esempio di codice illustra come impostare la modalità di calcolo del progetto manuale.
// Crea un'istanza del progetto
Project project = new Project();

// Impostare la modalità di calcolo su Manuale
project.CalculationMode = CalculationMode.Manual;

// Imposta la data di inizio del progetto
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Aggiungi nuove attività
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Le proprietà necessarie sono impostate in modalità manuale
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"));

// Collega due attività insieme le loro date non devono essere ricalcolate in modalità manuale
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Nessun cambiamento nelle date dell'attività 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

Calcolo automatico del progetto utilizzando C#

Possiamo impostare la modalità di calcolo su automatico e verificarla seguendo i passaggi indicati di seguito:

  1. Innanzitutto, crea un’istanza della classe Project.
  2. Quindi, imposta la modalità di calcolo su Automatico.
  3. Quindi, imposta la data di inizio del progetto.
  4. Ora aggiungi nuove attività, ad esempio Attività 1 e Attività 2.
  5. Successivamente, inizializza un oggetto della classe TaskLinks e collega le attività.
  6. Infine, verifica le date ricalcolate.

L’esempio di codice seguente mostra come calcolare automaticamente il progetto usando C#.

// Questo esempio di codice illustra come impostare la modalità di calcolo del progetto automatico.
// Crea un'istanza del progetto
Project project = new Project();

// Impostare la modalità di calcolo su Automatico
project.CalculationMode = CalculationMode.Automatic;

// Imposta la data di inizio del progetto
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Aggiungi nuove attività
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Collega attività
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Verificare le date ricalcolate
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

Nessuna modalità di calcolo del progetto in C#

Possiamo impostare la modalità di calcolo su automatico e verificarla seguendo i passaggi indicati di seguito:

  1. Innanzitutto, crea un’istanza della classe Project.
  2. Quindi, imposta la modalità di calcolo su Nessuno.
  3. Quindi, specificare la data di inizio del progetto.
  4. Quindi, aggiungi una nuova attività, ad esempio Attività 1.
  5. Quindi, leggi le proprietà dell’attività.
  6. Successivamente, imposta la durata dell’attività in giorni.
  7. Infine, verifica la data di inizio e fine dell’attività.

Nell’esempio di codice seguente viene illustrato come impostare il calcolo del progetto su nessuno usando C#.

// Questo esempio di codice illustra come impostare la modalità di calcolo del progetto su Nessuno.
// Crea un'istanza del progetto
Project project = new Project();

// Impostare la modalità di calcolo su Nessuno
project.CalculationMode = CalculationMode.None;

// Aggiungi una nuova attività
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Si noti che anche gli ID non sono stati calcolati
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"));

// Imposta la proprietà della durata
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

Ottieni una licenza gratuita

Puoi ottenere una licenza temporanea gratuita per provare la libreria senza limitazioni di valutazione.

Conclusione

In questo articolo, abbiamo imparato come impostare le modalità di calcolo del progetto a livello di codice. Abbiamo anche visto come i valori delle proprietà dipendenti vengono calcolati in ogni modalità di calcolo usando C#. Inoltre, puoi saperne di più su Aspose.Tasks per .NET API usando la documentazione. In caso di ambiguità, non esitare a contattarci sul forum.

Guarda anche