C#을 사용하여 프로그래밍 방식으로 프로젝트 계산

Microsoft Project의 프로젝트 옵션에 정의된 계산 모드를 사용하여 프로젝트 일정이나 비용을 계산할 수 있습니다. 프로젝트 일정에는 모든 프로젝트 작업의 시작 날짜와 종료 날짜가 표시됩니다. Microsoft Project에서는 프로젝트를 수동 또는 자동으로 계산할 수 있습니다. C# 개발자는 .NET 애플리케이션에서 프로젝트 계산 모드를 쉽게 설정하고 프로젝트 속성을 계산할 수 있습니다. 이 기사에서는 C#을 사용하여 프로그래밍 방식으로 프로젝트를 계산하는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

프로그래밍 방식으로 프로젝트를 계산하는 C# API

프로젝트 계산 모드를 설정하기 위해 Aspose.Tasks for .NET API를 사용합니다. 종속 속성 값을 계산하기 위해 세 가지 프로젝트 계산 모드를 제공합니다. 이러한 계산 모드는 다음과 같습니다.

  • 없음 – 필요한 속성만 설정하고 프로젝트 날짜 및 비용을 다시 계산하지 않습니다.
  • 수동 – 프로젝트 날짜 및 비용을 다시 계산하지 않고 종속 개체 속성만 설정합니다.
  • 자동 – 프로젝트 날짜와 비용 속성을 자동으로 다시 계산합니다.

API는 CalculationMode 열거형에서 위에서 언급한 계산 모드를 정의합니다. Project 클래스의 CalculationMode 속성을 사용하면 CalculationMode의 값을 설정하거나 가져올 수 있습니다. API를 사용하면 일부 수정 사항을 추가하기 위해 기존 프로젝트를 조작할 수도 있습니다. 또한 기본 및 고급 프로젝트 관리 작업을 원활하게 수행할 수 있습니다. API의 DLL을 다운로드하거나 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 project = new Project();

// 계산 모드를 없음으로 설정
project.CalculationMode = CalculationMode.None;

// 새 작업 추가
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// 짝수 id는 계산되지 않았습니다.
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#을 사용하여 각 계산 모드에서 종속 속성 값을 계산하는 방법을 살펴보았습니다. 또한 문서를 사용하여 .NET API용 Aspose.Tasks에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.

또한보십시오