작업에 대한 링크 추가

작업 링크는 Microsoft Project (MPP/XML) 파일에서 프로젝트 종속성을 모델링 할 때 기본 작업입니다. 이 기사는 .NET 용 VSTO 및 Aspose.Tasks를 사용하여 작업 종속성을 프로그래밍 방식으로 추가하고 시각화하는 방법을 보여줍니다.

소개

프로젝트 관리에서 작업 링크는 활동이 서로 의존하는 방식을 정의합니다. * finish-to-start * 또는 * start-to-Start *와 같은 이러한 종속성은 작업이 논리적 실행 시퀀스를 따라야합니다.

프로그래밍 방식으로 Microsoft Project와 함께 작업 할 때는 다음 중 하나를 사용하여 이러한 링크를 설정할 수 있습니다.

다음은 작업을 연결하기위한 두 가지 접근법의 예입니다.

VSTO를 사용한 작업을 링크합니다

다음 예제는 Microsoft.office.interop.msproject를 사용하여 * Finish-to-Start * 종속성 체인을 만드는 방법을 보여줍니다.

⚠ Requires Microsoft Project to be installed and accessible on the machine.

 1Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
 2object missingValue = System.Reflection.Missing.Value;
 3
 4projectApplication.FileOpenEx(@"D:\Aspose\Migration\SampleProject.mpp",
 5    missingValue, missingValue, missingValue, missingValue,
 6    missingValue, missingValue, missingValue, missingValue,
 7    missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
 8    missingValue, missingValue, missingValue, missingValue,
 9    missingValue);
10
11Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
12
13// Add task dependencies using Finish-to-Start links
14project.Tasks.get_UniqueID(2).TaskDependencies.Add(project.Tasks.get_UniqueID(1), PjTaskLinkType.pjFinishToStart);
15project.Tasks.get_UniqueID(3).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
16project.Tasks.get_UniqueID(4).TaskDependencies.Add(project.Tasks.get_UniqueID(3), PjTaskLinkType.pjFinishToStart);
17project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(4), PjTaskLinkType.pjFinishToStart);
18project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
19
20// Print dependencies to console
21foreach (Task tsk in project.Tasks)
22{
23    foreach (TaskDependency dep in project.Tasks.get_UniqueID(tsk.ID).TaskDependencies)
24    {
25        Console.WriteLine("From ID = " + dep.From.ID + " => To ID = " + dep.To.ID);
26    }
27    Console.WriteLine("____________________________________________________________");
28}
29
30// Save and close the project
31projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);

Key Notes:

Aspose.Tasks offers a modern and streamlined way to define task dependencies programmatically without relying on Microsoft Project or COM components.

 1Project project = new Project("New Project.mpp");
 2
 3Task task1 = project.RootTask.Children.GetById(1);
 4Task task2 = project.RootTask.Children.GetById(2);
 5Task task3 = project.RootTask.Children.GetById(3);
 6Task task4 = project.RootTask.Children.GetById(4);
 7Task task5 = project.RootTask.Children.GetById(5);
 8
 9// Link the tasks
10TaskLink taskLink = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
11taskLink = project.TaskLinks.Add(task2, task3, TaskLinkType.FinishToStart);
12taskLink = project.TaskLinks.Add(task3, task4, TaskLinkType.FinishToStart);
13taskLink = project.TaskLinks.Add(task4, task5, TaskLinkType.FinishToStart);
14taskLink = project.TaskLinks.Add(task2, task5, TaskLinkType.FinishToStart);
15
16// Display links among the tasks
17TaskLinkCollection allinks = project.TaskLinks;
18foreach (TaskLink link in allinks)
19{
20    Console.WriteLine("From ID = " + link.PredTask.Get(Tsk.Id) + " => To ID = " + link.SuccTask.Get(Tsk.Id));
21    Console.WriteLine("________________________________________");
22}
23 
24project.Save("LinkTasks_out.mpp", SaveFileFormat.MPP);

하이라이트:

API는 직관적이고 간결하며 ASP.NET, Azure 기능 또는 백그라운드 서비스에서 서버 측 사용할 준비가되어 있습니다.

비교 테이블

FeatureVSTO / InteropAspose.Tasks for .NET
Requires MS Project✅ Yes❌ No
Supported Environments🖥 Desktop only☁ Desktop, Web, Cloud, Containers
Dependency TypeCOM InteropPure .NET assembly
API Simplicity⚠ Verbose and boilerplate-heavy✅ Clean and object-oriented
Task Link ManagementTaskDependencies collectionTaskLinks collection
Cross-platform support❌ No✅ Yes

결론

작업 논리를 유지하는 데 작업을 연결하는 것이 중요합니다. VSTO는 Microsoft 프로젝트에 대한 기본 액세스를 제공하지만 데스크탑 환경 및 COM Interop에 대한 의존으로 인해 최신 응용 프로그램에 적합하지 않습니다.

aspose.tasks for .net은 작업 관계 관리를 단순화하는 깨끗하고 확장 가능한 대안을 제공합니다. 유연성과 플랫폼 독립성은 CI/CD 파이프 라인, 서버 앱 및 웹 플랫폼에 통합하는 데 이상적입니다.

작업 관계 또는 스케줄링 논리에 대한 자세한 내용은 다음과 같습니다.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.