작업에 대한 링크 추가
작업 링크는 Microsoft Project (MPP/XML) 파일에서 프로젝트 종속성을 모델링 할 때 기본 작업입니다. 이 기사는 .NET 용 VSTO 및 Aspose.Tasks를 사용하여 작업 종속성을 프로그래밍 방식으로 추가하고 시각화하는 방법을 보여줍니다.
소개
프로젝트 관리에서 작업 링크는 활동이 서로 의존하는 방식을 정의합니다. * finish-to-start * 또는 * start-to-Start *와 같은 이러한 종속성은 작업이 논리적 실행 시퀀스를 따라야합니다.
프로그래밍 방식으로 Microsoft Project와 함께 작업 할 때는 다음 중 하나를 사용하여 이러한 링크를 설정할 수 있습니다.
- VSTO 및 COM Interop : Microsoft Project Desktop 응용 프로그램과 밀접하게 결합됩니다.
- aspose.tasks for .NET : 프로젝트 파일 조작을위한 플랫폼 독립적 인 서버-안전 API.
다음은 작업을 연결하기위한 두 가지 접근법의 예입니다.
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:
TaskDependencies.Add()
links a predecessor and successor using a definedPjTaskLinkType
.- Interop requires verbose code and careful handling of COM objects.
- The
get_UniqueID(taskID)
method is used to access specific tasks for linking.
Link Tasks Using Aspose.Tasks for .NET
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);
하이라이트:
project.tasklinks.add (task1, task2, tasklinktype.finishtostart)
두 작업 사이에 직접 링크가 추가됩니다.- 모든 작업 관계는`taskLinkCollection ‘에 저장됩니다.
- 각 링크는
predtask
,succtask
,linttype
및`lag ‘와 같은 속성을 노출시킵니다.
API는 직관적이고 간결하며 ASP.NET, Azure 기능 또는 백그라운드 서비스에서 서버 측 사용할 준비가되어 있습니다.
비교 테이블
Feature | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires MS Project | ✅ Yes | ❌ No |
Supported Environments | 🖥 Desktop only | ☁ Desktop, Web, Cloud, Containers |
Dependency Type | COM Interop | Pure .NET assembly |
API Simplicity | ⚠ Verbose and boilerplate-heavy | ✅ Clean and object-oriented |
Task Link Management | TaskDependencies collection | TaskLinks collection |
Cross-platform support | ❌ No | ✅ Yes |
결론
작업 논리를 유지하는 데 작업을 연결하는 것이 중요합니다. VSTO는 Microsoft 프로젝트에 대한 기본 액세스를 제공하지만 데스크탑 환경 및 COM Interop에 대한 의존으로 인해 최신 응용 프로그램에 적합하지 않습니다.
aspose.tasks for .net은 작업 관계 관리를 단순화하는 깨끗하고 확장 가능한 대안을 제공합니다. 유연성과 플랫폼 독립성은 CI/CD 파이프 라인, 서버 앱 및 웹 플랫폼에 통합하는 데 이상적입니다.
작업 관계 또는 스케줄링 논리에 대한 자세한 내용은 다음과 같습니다.