Microsoft Project — это популярное программное обеспечение для управления проектами, которое облегчает менеджерам проектов эффективное управление проектами. Он позволяет менеджерам создавать задачи и ресурсы, назначать задачи ресурсам, отслеживать ход выполнения проекта, управлять бюджетом и выполнять другие операции, связанные с проектом. Для программного создания файлов MS Project и управления ими Microsoft предоставляет MS Office Automation. Однако, наряду с другими недостатками, требует установки MS Office. Чтобы восполнить этот пробел, Aspose предлагает вам решение для автоматизации MS Project для приложений .NET, которое называется Aspose.Tasks for .NET.

Aspose.Tasks for .NET — это многофункциональный API, который позволяет программно создавать файлы MS Project (.mpp/.xml) с помощью C# или VB.NET. Кроме того, он предлагает различные функции для работы с задачами, ресурсами и календарями. В этой статье я покажу вам, как использовать Aspose.Tasks для .NET для создания файлов MS Project и работы с задачами и ресурсами с помощью C#. Остальная часть статьи разделена на следующие разделы.

Создание файлов MS Project с помощью C#

MPP — это собственный формат файлов Microsoft, который используется для файлов MS Project. Однако вы также можете хранить данные проекта в файлах XML для обмена ими между различными приложениями. Создание нового проекта с нуля — простая задача, которую можно выполнить, выполнив следующие действия:

В следующих примерах кода показано, как создавать файлы MS Project с помощью C#.

Сохранить файлы проекта MS как MPP

// Создать новый проект
Project project = new Project();

// Сохраните его как файл .mpp
project.Save("New Project.mpp", SaveFileFormat.MPP);

Сохранить файлы проекта MS как XML

// Создать новый проект
Project project = new Project();

// Сохраните его как файл .xml
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

Добавление задач в файлы MS Project с помощью C#

Пустой файл MS Project бесполезен без задач и ресурсов. Итак, давайте посмотрим, как создавать и добавлять задачи в проект. Задача может быть одиночной задачей или сводной задачей, содержащей группу подзадач. Ниже приведены шаги для добавления задач в файл MS Project.

  • Создайте и инициализируйте объект Project.
  • Добавьте новую суммарную задачу в коллекцию Tasks проекта с помощью метода Project.RootTask.Children.Add(string).
  • Добавьте подзадачу в суммарную задачу с помощью метода Task.Children.Add(string).
  • Сохраните проект методом Project.Save().

В следующем примере кода показано, как создавать и добавлять задачи в файлы MS Project с помощью C#.

// Создать новый проект
Project project = new Project();

// Добавить задачу и подзадачу
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// Сохранить файл
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

В следующем примере кода показано, как задать различные свойства задач, такие как продолжительность, дата/время начала и т. д.

// Создать проект
Project project = new Project();

// Добавить задачу и установить свойства задачи
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

Добавить ресурсы в файлы MS Project с помощью С#

Ресурсы — это объекты, которые должны выполнять задачи в проекте. Следовательно, проект был бы невозможен без ресурсов для работы над ним. Итак, давайте посмотрим, как создавать и добавлять ресурсы в проект. Ниже приведены шаги по добавлению ресурсов в файл MS Project.

  • Создайте новый проект, используя класс Project.
  • Добавьте новый ресурс в коллекцию Resources проекта с помощью метода Project.Resources.Add(string).
  • Сохраните проект с помощью метода Project.Save().

В следующем примере кода показано, как добавить ресурсы в файл MS Project с помощью C#.

// Создать проект
Project project = new Project();

// Добавить ресурсы
Resource resource = project.Resources.Add("Rsc");

// Сохранить проект
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

В следующем примере кода задаются свойства ресурса, такие как дата/время начала, тип и т. д.

// Создать проект
Project project = new Project();

// Добавить ресурсы
Resource resource = project.Resources.Add("Rsc");

// Сохранить проект
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

Назначение задач ресурсу в проекте с помощью C#

Завершив добавление задач и ресурсов в проект, вы можете указать, какая задача должна выполняться каким ресурсом. Таким образом, вы назначите задачу (задачи) каждому ресурсу. Ниже приведены шаги для назначения задач ресурсам в проекте.

  • Создайте или загрузите проект, используя класс Project.
  • Добавьте в проект новые ресурсы и задайте их свойства, такие как формат даты, дата начала и т. д.
  • Добавляйте новые задачи в проект и устанавливайте их свойства, такие как дата/время начала, продолжительность и т. д.
  • Выполните назначение задач, добавив задачу и соответствующий ресурс в коллекцию Project.ResourceAssignments.
  • Сохраните проект с помощью метода Project.Save().

Ниже приведен полный пример кода создания и назначения задач ресурсам в файле MS Project.

// Создать проект
Project project = new Project("New Project.mpp")
{
    CalculationMode = CalculationMode.Automatic
};

// Установить свойства
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);

// Добавить ресурсы
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");

// Добавить задачи
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));

// Назначение задач
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));

// чтобы полностью соответствовать ожидаемому MPP
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// Сохранить проект
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

Добавить календарь в проект с помощью C#

Календари также являются одним из основных объектов проектов, которые используются для определения расписания проекта. Календарь позволяет руководителям проектов создавать временную шкалу проекта. Ниже приведены шаги для добавления календаря в проект.

  • Создайте или загрузите проект, используя класс Project.
  • Добавьте новый Calendar в коллекцию Project.Calendars.
  • Создайте расписание, используя объект Calendar.
  • Сохраните проект.

В следующем примере кода показано, как добавить календарь в проект с помощью C#.

// Создать экземпляр проекта
Project project = new Project();

// Определить календарь
Calendar cal = project.Calendars.Add("Calendar1");

// Добавить рабочие дни с понедельника по четверг со временем по умолчанию
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));

// Установить пятницу как сокращенный рабочий день
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// Устанавливает рабочее время. Важна только временная часть DateTime
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);

// Сохранить проект
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

Скачать или установить

Вы можете скачать Aspose.Tasks для .NET DLL или установить его в свой проект с помощью NuGet.

Попробуйте Aspose.Tasks для .NET бесплатно

Aspose предлагает бесплатную временную лицензию для опробования своих продуктов без пробных ограничений. Вы можете получить один из здесь.

Смотрите также