리소스를 만들고 작업과 연결하십시오

MPP 파일로 작업하는 동안 리소스를 생성하고 프로젝트의 작업에 연결해야 할 수도 있습니다. 이 기사에서는 .NET 응용 프로그램에 MPP 파일을로드하고 vSTO.NET 용 aspose.tasks를 사용하여 작업에 리소스를 할당하는 방법을 보여줍니다.

소개

프로젝트 스케줄링에서 자원을 작업과 연관하면 작업량 계획, 비용 추정 및 진행 상황 추적이 가능합니다. 자원은 일반적으로 사람, 장비 또는 자재를 나타내며 의미있는 프로젝트 분석의 핵심입니다.

이 기사는 프로그래밍 방식으로 다음과 같은 방법을 보여줍니다.

이 기능은 레거시 VSTO Interop과 .NET API 용 현대적인 Aspose.tasks를 모두 사용하여 시연됩니다.

VSTO를 사용하여 리소스 및 작업에 대한 링크를 작성하십시오

리소스를 만들고 Microsoft Office Interop을 사용하여 작업에 연결하려면 :

  1. 비주얼 스튜디오 프로젝트를 만듭니다.
  2. com 탭에서 Microsoft Project 12.0 객체 라이브러리에 대한 참조를 추가하십시오.
  3. microsoft.office.interop.msproject를 가져옵니다.
  4. 아래 코드 샘플을 사용하십시오.

스크린 샷 전후에 Gantt 및 리소스보기의 프로젝트 구조를 보여줍니다.

📎 입력 파일 : 간트 차트보기

입력 간트 차트보기를 표시하십시오

📎 입력 파일 : 리소스 시트보기

입력 리소스 시트보기를 표시하십시오

VSTO 코드 예제

 1Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
 2object missingValue = System.Reflection.Missing.Value;
 3
 4projectApplication.FileOpenEx(@"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
13int iResourceId = 1;
14
15foreach (Task tsk in project.Tasks)
16{
17    string developer = "Developer0" + iResourceId;
18    project.Resources.Add(developer, iResourceId);
19    tsk.Assignments.Add(tsk.ID, iResourceId, missingValue);
20    iResourceId++;
21}
22
23projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);

Output file: Gantt chart view

show output Gantt chart view

Output file: Resource sheet view

show output resource sheet chart view

Notes

To accomplish the same using Aspose.Tasks:

  1. Create a Visual Studio project.
  2. Add a reference to Aspose.Tasks via the .NET tab.
  3. Import the Aspose.Tasks namespace.
  4. Use the example code provided below.
 1Project project = new Project("New Project.mpp");
 2
 3// Declare ChildTasksCollector class object
 4ChildTasksCollector collector = new ChildTasksCollector();
 5
 6// Use TaskUtils to get all children tasks in RootTask
 7TaskUtils.Apply(project.RootTask, collector, 0);
 8
 9// Define Resources
10for (int i = 0; i <= 4; i++)
11{
12    // Add resource to project
13    Resource newResource = project.Resources.Add("Developer0" + i);
14    newResource.Set(Rsc.Type, ResourceType.Work);
15
16    // Define assignment
17    ResourceAssignment newResourceAssignment = project.ResourceAssignments.Add((Task)collector.Tasks[i], newResource);
18}
19
20project.Save("CreateResourcesAndLinkToTasks_out.mpp", SaveFileFormat.MPP);

Highlights

Comparison Table

FeatureVSTO / InteropAspose.Tasks for .NET
Microsoft Project required✅ Yes❌ No
Platform support🖥 Windows only✅ Cross-platform
Deployment-friendly❌ Requires Office runtime✅ Self-contained .NET
API verbosity⚠ High✅ Minimal and intuitive
Assignment methodAssignments.Add(taskID, resourceID)ResourceAssignments.Add(task, res)
Output file format flexibilityLimited✅ MPP, XML, PDF, HTML, etc.

Summary

Creating and assigning resources is a key step in building a realistic and trackable project plan. While VSTO offers native access to Microsoft Project’s object model, it comes with limitations in portability, scalability, and code complexity.

Aspose.Tasks for .NET provides a high-level API that enables efficient resource management in MPP files — all without requiring Microsoft Project to be installed. This makes it the ideal solution for web apps, services, and cross-platform .NET workloads.

For related scenarios, check out:

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.