Microsoft Project è un popolare software di gestione dei progetti che semplifica la gestione efficiente dei progetti da parte dei project manager. Consente ai manager di creare attività e risorse, assegnare attività alle risorse, tenere traccia dell’avanzamento del progetto, gestire il budget ed eseguire altre operazioni relative al progetto. Per creare e gestire i file di MS Project a livello di codice, Microsoft fornisce MS Office Automation. Tuttavia, insieme ad altre carenze, richiede l’installazione di MS Office. Per colmare questa lacuna, Aspose interviene per fornirti una soluzione di automazione di MS Project per applicazioni .NET come Aspose.Tasks for .NET.

Aspose.Tasks for .NET è un’API ricca di funzionalità che consente di creare file MS Project (.mpp/.xml) a livello di codice utilizzando C# o VB.NET. Inoltre, offre varie funzionalità per lavorare con attività, risorse e calendari. In questo articolo, ti mostrerò come utilizzare Aspose.Tasks per .NET per creare file MS Project e lavorare con attività e risorse usando C#. Il resto dell’articolo è suddiviso nelle seguenti sezioni.

Crea file di progetto MS usando C#

MPP è il formato di file proprietario di Microsoft utilizzato per i file MS Project. Tuttavia, puoi anche conservare i dati del progetto in file XML per condividerli tra diverse applicazioni. La creazione di un nuovo progetto da zero è un compito semplice e può essere eseguita utilizzando i seguenti passaggi:

Gli esempi di codice seguenti mostrano come creare file di MS Project usando C#.

Salva i file di progetto MS come MPP

// Crea un nuovo progetto
Project project = new Project();

// Salvalo come file .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);

Salva i file di progetto MS come XML

// Crea un nuovo progetto
Project project = new Project();

// Salvalo come file .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

Aggiungi attività ai file di progetto MS usando C#

Il file MS Project vuoto è inutile senza attività e risorse. Vediamo quindi come creare e aggiungere attività a un progetto. Un’attività potrebbe essere una singola attività o un’attività di riepilogo contenente un gruppo di attività secondarie. Di seguito sono riportati i passaggi per aggiungere attività a un file MS Project.

  • Crea e inizializza l’oggetto Project.
  • Aggiungi una nuova attività di riepilogo alla raccolta Tasks del progetto utilizzando il metodo Project.RootTask.Children.Add(string).
  • Aggiungere un’attività secondaria all’attività di riepilogo utilizzando il metodo Task.Children.Add(string).
  • Salva il progetto usando il metodo Project.Save().

L’esempio di codice seguente mostra come creare e aggiungere attività ai file di MS Project usando C#.

// Crea un nuovo progetto
Project project = new Project();

// Aggiungi attività e attività secondaria
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// Salvare il file
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

L’esempio di codice seguente mostra come impostare diverse proprietà delle attività come durata, data/ora di inizio e così via.

// Crea progetto
Project project = new Project();

// Aggiungi attività e imposta le proprietà delle attività
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

Aggiungi risorse ai file di progetto MS usando C#

Le risorse sono le entità che dovrebbero svolgere le attività in un progetto. Quindi, un progetto non sarebbe possibile senza le risorse per lavorarci. Vediamo quindi come creare e aggiungere risorse a un progetto. Di seguito sono riportati i passaggi per aggiungere risorse a un file di MS Project.

  • Crea un nuovo progetto usando la classe Project.
  • Aggiungi una nuova risorsa alla raccolta Resources del progetto utilizzando il metodo Project.Resources.Add(string).
  • Salva il progetto usando il metodo Project.Save().

L’esempio di codice seguente mostra come aggiungere risorse a un file di MS Project usando C#.

// Crea progetto
Project project = new Project();

// Aggiungi risorse
Resource resource = project.Resources.Add("Rsc");

// Salva il progetto
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

L’esempio di codice seguente imposta le proprietà di una risorsa come data/ora di inizio, tipo e così via.

// Crea progetto
Project project = new Project();

// Aggiungi risorse
Resource resource = project.Resources.Add("Rsc");

// Salva il progetto
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

Assegna attività a risorsa in un progetto usando C#

Una volta completata l’aggiunta di attività e risorse al progetto, è possibile specificare quale attività deve essere eseguita da quale risorsa. Pertanto, assegnerai le attività a ciascuna risorsa. Di seguito sono riportati i passaggi per assegnare attività alle risorse in un progetto.

  • Crea o carica un progetto usando la classe Project.
  • Aggiungi nuove risorse al progetto e imposta le loro proprietà come il formato della data, la data di inizio, ecc.
  • Aggiungi nuove attività al progetto e imposta le loro proprietà come data/ora di inizio, durata e così via.
  • Eseguire l’assegnazione delle attività aggiungendo l’attività e la rispettiva risorsa alla raccolta Project.ResourceAssignments.
  • Salva il progetto usando il metodo Project.Save().

Di seguito è riportato l’esempio di codice completo su come creare e assegnare attività alle risorse in un file di MS Project.

// Crea progetto
Project project = new Project("New Project.mpp")
{
    CalculationMode = CalculationMode.Automatic
};

// Imposta proprietà
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);

// Aggiungi risorse
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");

// Aggiungi compiti
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));

// Assegna compiti
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));

// per abbinare completamente l'MPP previsto
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// Salva il progetto
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

Aggiungi calendario a un progetto usando C#

I calendari sono anche una delle entità principali dei progetti che vengono utilizzati per definire la pianificazione del progetto. Il calendario consente ai project manager di creare una sequenza temporale per un progetto. Di seguito sono riportati i passaggi per aggiungere un calendario a un progetto.

  • Crea o carica un progetto usando la classe Project.
  • Aggiungi nuovo Calendar alla raccolta Project.Calendars.
  • Creare la pianificazione utilizzando l’oggetto Calendario.
  • Salva il progetto.

L’esempio di codice seguente mostra come aggiungere un calendario a un progetto usando C#.

// Crea un'istanza del progetto
Project project = new Project();

// Definisci Calendario
Calendar cal = project.Calendars.Add("Calendar1");

// Aggiungi giorni lavorativi dal lunedì al giovedì con orari predefiniti
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));

// Imposta venerdì come giorno lavorativo breve
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// Imposta l'orario di lavoro. Solo la parte temporale di DateTime è 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);

// Salva il progetto
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Scarica o installa

Puoi scaricare Aspose.Tasks per .NET DLL o installarlo nel tuo progetto usando NuGet.

Prova Aspose.Tasks per .NET gratuitamente

Aspose offre una licenza temporanea gratuita per provare i suoi prodotti senza limitazioni di prova. Puoi ottenerne uno da qui.

Guarda anche