Программно рассчитать проект с помощью C#

Мы можем рассчитать графики проекта или затраты, используя режимы расчета, определенные в параметрах проекта для Microsoft Project. В расписании проекта указаны даты начала и окончания всех задач проекта. Microsoft Project позволяет выполнять расчет проекта вручную или автоматически. Как разработчик C#, мы можем легко установить режим расчета проекта в приложениях .NET и вычислить свойства проекта. В этой статье мы узнаем, как программно рассчитать проект с помощью C#.

В этой статье должны быть раскрыты следующие темы:

C# API для программного расчета проекта

Для настройки режимов расчета проекта мы будем использовать API Aspose.Tasks for .NET. Он предоставляет три режима расчета проекта для расчета значений зависимых свойств. Эти режимы расчета:

  • Нет — устанавливает только необходимые свойства и не пересчитывает сроки и стоимость проекта.
  • Вручную – устанавливает только зависимые свойства объекта без пересчета сроков и стоимости проекта.
  • Автоматически — он автоматически пересчитывает даты проекта и свойства стоимости.

API определяет вышеупомянутые режимы расчета в перечислении CalculationMode. Свойство CalculationMode класса Project позволяет установить или получить значение CalculationMode. API также позволяет манипулировать существующим проектом, чтобы добавить некоторые модификации. Кроме того, он упрощает выполнение как базовых, так и расширенных операций по управлению проектами. Пожалуйста, загрузите DLL API или установите его с помощью NuGet.

PM> Install-Package Aspose.Tasks

Ручной расчет проекта с использованием C#

Мы можем установить ручной режим расчета и проверить его, выполнив шаги, указанные ниже:

  1. Во-первых, создайте экземпляр класса Project.
  2. Затем установите режим расчета «Вручную».
  3. Затем укажите дату начала проекта.
  4. Затем добавьте новые задачи, например, Задача 1 и Задача 2.
  5. Затем прочитать свойства задачи, установленные в ручном режиме.
  6. После этого инициализируйте объект класса TaskLinks и свяжите задачи.
  7. Наконец, проверьте дату начала и окончания задачи 2.

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

// В этом примере кода показано, как установить режим ручного расчета проекта.
// Создать экземпляр проекта
Project project = new Project();

// Установите режим расчета «Вручную».
project.CalculationMode = CalculationMode.Manual;

// Установить дату начала проекта
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Добавить новые задачи
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Необходимые свойства задаются в ручном режиме
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"));

// Свяжите две задачи вместе, их даты не будут пересчитываться в ручном режиме
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Без изменений в датах Задачи 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

Автоматический расчет проекта с использованием C#

Мы можем установить автоматический режим расчета и проверить его, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса Project.
  2. Затем установите режим расчета «Автоматически».
  3. Затем установите дату начала проекта.
  4. Теперь добавьте новые задачи, например, Задача 1 и Задача 2.
  5. После этого инициализируйте объект класса TaskLinks и свяжите задачи.
  6. Наконец, проверьте пересчитанные даты.

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

// В этом примере кода показано, как установить режим автоматического расчета проекта.
// Создать экземпляр проекта
Project project = new Project();

// Установите режим расчета на автоматический
project.CalculationMode = CalculationMode.Automatic;

// Установить дату начала проекта
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// Добавить новые задачи
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// Связать задачи
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// Проверьте пересчитанные даты
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

Нет режима расчета проекта в C#

Мы можем установить автоматический режим расчета и проверить его, выполнив следующие шаги:

  1. Во-первых, создайте экземпляр класса Project.
  2. Затем установите режим расчета «Нет».
  3. Затем укажите дату начала проекта.
  4. Затем добавьте новую задачу, например, Задача 1.
  5. Затем прочтите свойства задачи.
  6. После этого установите продолжительность задачи в днях.
  7. Наконец, проверьте дату начала и окончания задачи.

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

// В этом примере кода показано, как задать для параметра Project Calculation Mode значение None.
// Создать экземпляр проекта
Project project = new Project();

// Установите режим расчета «Нет».
project.CalculationMode = CalculationMode.None;

// Добавить новую задачу
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// Обратите внимание, что даже идентификаторы не были рассчитаны
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"));

// Задать свойство длительности
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

Получить бесплатную лицензию

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

Вывод

В этой статье мы научились программно устанавливать режимы расчета проекта. Мы также видели, как вычисляются значения зависимых свойств в каждом режиме вычисления с использованием C#. Кроме того, вы можете узнать больше об Aspose.Tasks for .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

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