Microsoft Project é um software de gerenciamento de projetos popular que torna mais fácil para os gerentes de projeto gerenciar os projetos com eficiência. Ele permite que os gerentes criem tarefas e recursos, atribuam tarefas a recursos, acompanhem o andamento do projeto, gerenciem o orçamento e executem outras operações relacionadas ao projeto. Para criar e gerenciar arquivos do MS Project programaticamente, a Microsoft fornece o MS Office Automation. No entanto, juntamente com outras deficiências, é necessário instalar o MS Office. Para preencher essa lacuna, o Aspose entra em cena para fornecer uma solução de automação do MS Project para aplicativos .NET como Aspose.Tasks for .NET.

Aspose.Tasks for .NET é uma API rica em recursos que permite criar arquivos do MS Project (.mpp/.xml) programaticamente usando C# ou VB.NET. Além disso, oferece vários recursos para trabalhar com tarefas, recursos e calendários. Neste artigo, mostrarei como usar o Aspose.Tasks for .NET para criar arquivos do MS Project e trabalhar com tarefas e recursos usando C#. O restante do artigo está dividido nas seguintes seções.

Criar arquivos do MS Project usando C#

MPP é o formato de arquivo proprietário da Microsoft que é usado para arquivos do MS Project. No entanto, você também pode manter os dados do projeto em arquivos XML para compartilhá-los entre diferentes aplicativos. Criar um novo projeto do zero é uma tarefa simples e pode ser feita seguindo os seguintes passos:

Os exemplos de código a seguir mostram como criar arquivos do MS Project usando C#.

Salvar arquivos do MS Project como MPP

// Criar um novo projeto
Project project = new Project();

// Salve-o como arquivo .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);

Salvar arquivos do MS Project como XML

// Criar um novo projeto
Project project = new Project();

// Salve-o como arquivo .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

Adicionar tarefas aos arquivos do MS Project usando C#

O arquivo vazio do MS Project é inútil sem tarefas e recursos. Então, vamos ver como criar e adicionar tarefas a um projeto. Uma tarefa pode ser uma única tarefa ou tarefa de resumo contendo um grupo de subtarefas. A seguir estão as etapas para adicionar tarefas a um arquivo do MS Project.

  • Crie e inicialize o objeto Project.
  • Adicione uma nova tarefa de resumo à coleção Tasks do projeto usando o método Project.RootTask.Children.Add(string).
  • Adicione uma subtarefa à tarefa de resumo usando o método Task.Children.Add(string).
  • Salve o projeto usando o método Project.Save().

O exemplo de código a seguir mostra como criar e adicionar tarefas a arquivos do MS Project usando C#.

// Criar um novo projeto
Project project = new Project();

// Adicionar tarefa e subtarefa
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// Salvar Arquivo
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

O exemplo de código a seguir mostra como definir diferentes propriedades das tarefas, como duração, data/hora de início etc.

// Criar projeto
Project project = new Project();

// Adicionar tarefa e definir propriedades da tarefa
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

Adicionar recursos aos arquivos do MS Project usando C#

Os recursos são as entidades que devem executar as tarefas em um projeto. Assim, um projeto não seria possível sem os recursos para trabalhar nele. Então, vamos conferir como criar e adicionar recursos a um projeto. A seguir estão as etapas para adicionar recursos a um arquivo do MS Project.

  • Crie um novo projeto usando a classe Project.
  • Adicione um novo recurso à coleção Resources do projeto usando o método Project.Resources.Add(string).
  • Salve o projeto usando o método Project.Save().

O exemplo de código a seguir mostra como adicionar recursos a um arquivo do MS Project usando C#.

// Criar projeto
Project project = new Project();

// Adicionar recursos
Resource resource = project.Resources.Add("Rsc");

// Salvar projeto
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

O exemplo de código a seguir define as propriedades de um recurso, como data/hora de início, tipo etc.

// Criar projeto
Project project = new Project();

// Adicionar recursos
Resource resource = project.Resources.Add("Rsc");

// Salvar projeto
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

Atribuir tarefas ao recurso em um projeto usando C#

Depois de concluir a adição de tarefas e recursos no projeto, você pode especificar qual tarefa deve ser executada por qual recurso. Assim, você atribuirá a(s) tarefa(s) a cada recurso. A seguir estão as etapas para atribuir tarefas a recursos em um projeto.

  • Crie ou carregue um projeto usando a classe Project.
  • Adicione novos recursos ao projeto e defina suas propriedades, como formato de data, data de início, etc.
  • Adicione novas tarefas ao projeto e defina suas propriedades, como data/hora de início, duração e etc.
  • Execute a atribuição de tarefas adicionando a tarefa e seu respectivo recurso à coleção Project.ResourceAssignments.
  • Salve o projeto usando o método Project.Save().

Veja a seguir o exemplo de código completo de como criar e atribuir tarefas a recursos em um arquivo do MS Project.

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

// Definir propriedades
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);

// Adicionar recursos
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");

// Adicionar tarefas
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));

// Atribuir tarefas
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));

// para corresponder totalmente ao MPP esperado
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// Salvar projeto
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

Adicionar calendário a um projeto usando C#

Os calendários também são uma das principais entidades dos projetos que são usados para definir o cronograma do projeto. O calendário possibilita que os gerentes de projeto criem uma linha do tempo para um projeto. A seguir estão as etapas para adicionar um calendário a um projeto.

  • Crie ou carregue um projeto usando a classe Project.
  • Adicione um novo Calendar à coleção Project.Calendars.
  • Crie a agenda usando o objeto Calendar.
  • Salve o projeto.

O exemplo de código a seguir mostra como adicionar um calendário a um projeto usando C#.

// Criar uma instância de projeto
Project project = new Project();

// Definir calendário
Calendar cal = project.Calendars.Add("Calendar1");

// Adicione dias úteis de segunda a quinta-feira com horários padrão
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));

// Definir sexta-feira como dia útil curto
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// Define o tempo de trabalho. Apenas a parte do tempo de 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);

// Salvar projeto
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Baixe ou instale

Você pode baixar Aspose.Tasks for .NET DLL ou instalá-lo em seu projeto usando NuGet.

Experimente o Aspose.Tasks for .NET gratuitamente

A Aspose oferece uma licença temporária gratuita para experimentar seus produtos sem limitações de avaliação. Você pode obter um aqui.

Veja também