Програмне обчислення проекту за допомогою 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. Нарешті перевірте дату початку та завершення Завдання.

У наведеному нижче прикладі коду показано, як установити для розрахунку проекту значення None за допомогою C#.

// У цьому прикладі коду показано, як встановити для режиму обчислення проекту значення «Немає».
// Створіть екземпляр проекту
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 за допомогою документації. У разі будь-яких неясностей зв’яжіться з нами на форумі.

Дивись також