Створіть ресурси та зв’язок із завданнями
Працюючи з файлами MPP, вам може знадобитися створити ресурси та пов’язати їх із завданнями з вашого проекту. Ця стаття демонструє, як завантажувати файли MPP у ваші програми .NET та призначити ресурси завданням, використовуючи як VSTO, так і aspose.tasks for .NET.
Вступ
При плануванні проектів асоціація ресурсів із завданнями дозволяє планувати навантаження, оцінку витрат та відстеження прогресу. Ресурси зазвичай представляють людей, обладнання чи матеріал, а їх належне завдання є ключовим для змістовного аналізу проектів.
У цій статті показано, як програмно:
- Додайте нові ресурси до файлу проекту Microsoft.
- Призначте ці ресурси завданням.
Функціональність демонструється за допомогою Legacy VSTO Interop, і Modern Aspope.Tasks для .NET API.
Створіть ресурси та посилання на завдання за допомогою VSTO
Щоб створити ресурси та зв’язати їх із завданнями за допомогою Microsoft Office Interop:
- Створіть проект Visual Studio.
- Додайте посилання на Бібліотека об’єктів Microsoft Project 12.0 з вкладки com.
- Імпортувати
Microsoft.office.interop.msproject
. - Використовуйте зразок коду нижче.
До та після скріншоти показують структуру проекту в переглядах Ганта та ресурсів.
📎 Вхідний файл: Перегляд діаграми 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
Output file: Resource sheet view
Примітки
- Ресурси додаються послідовно та призначаються для кожного завдання.
- Метод
Assignments.Add
вимагає ідентифікаторів завдань та ресурсів. - Взаємодія з COM вимагає ретельного управління життєвим циклом та посиланнями.
Створення ресурсів та посилання на завдання за допомогою Aspose.Tasks для .NET
Щоб досягти того ж результату за допомогою Aspose.Tasks:
Створіть проект Visual Studio.
Додайте посилання на Aspose.Tasks через вкладку .NET.
Імпортуйте простір імен
Aspose.Tasks
.Використайте наведений нижче приклад коду.
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);
Основні моменти
- Ресурси додаються за допомогою методу
project.Resources.Add
. - Завдання пов’язані із завданнями за допомогою
project.ResourceAssignments.Add(task, resource)
. - API є лаконічним, повністю керованим та сумісним із серверними середовищами.
Таблиця порівняння
| Функція | VSTO / Interop | Aspose.Tasks для .NET |
|————————————————————————|————————————–|
| Потрібен Microsoft Project | ✅ Так | ❌ Ні |
| Підтримка платформи | 🖥 Тільки для Windows | ✅ Кросплатформний |
| Зручний для розгортання | ❌ Потрібне середовище виконання Office | ✅ Автономний .NET |
| Детальність API | ⚠ Висока | ✅ Мінімальний та інтуїтивно зрозумілий |
| Метод призначення | Assignments.Add(taskID, resourceID)
| ResourceAssignments.Add(task, res)
|
| Гнучкість формату вихідного файлу | Обмежена | ✅ MPP, XML, PDF, HTML тощо |
Підсумок
Створення та призначення ресурсів є ключовим кроком у створенні реалістичного та відстежуваного плану проекту. Хоча VSTO пропонує вбудований доступ до об’єктної моделі Microsoft Project, він має обмеження щодо портативності, масштабованості та складності коду.
Aspose.Tasks for .NET надає високорівневий API, який дозволяє ефективно керувати ресурсами у файлах MPP — і все це без необхідності встановлення Microsoft Project. Це робить його ідеальним рішенням для веб-додатків, сервісів та кросплатформних робочих навантажень .NET.
Пов’язані сценарії дивіться тут: