Создать ресурсы и ссылка с задачами
Работая с файлами MPP, вам может потребоваться создать ресурсы и связать их с задачами из вашего проекта. Эта статья демонстрирует, как загружать файлы MPP в ваши приложения .NET и назначать ресурсы для задач, используя как VSTO, так и Aspose.Tasks для .NET.
Введение
В планировании проектов ассоциация ресурсов с задачами позволяет планировать нагрузку, оценку затрат и отслеживание прогресса. Ресурсы обычно представляют людей, оборудование или материал, а их надлежащее назначение является ключевым для значимого анализа проекта.
Эта статья показывает, как программно:
- Добавьте новые ресурсы в файл проекта Microsoft.
- Назначьте эти ресурсы задачам.
Функциональность демонстрируется с использованием как устаревшего VSTO Interop, так и современного Aspose.tasks для .NET API.
Создайте ресурсы и ссылку на задачи с использованием VSTO
Чтобы создать ресурсы и связать их с задачами, используя Interop Microsoft Office:
- Создайте проект Visual Studio.
- Добавьте ссылку на Microsoft Project 12.0 Библиотека объектов с вкладки com.
- Импорт
microsoft.office.interop.msproject
. - Используйте пример кода ниже.
До и после скриншотов показывают структуру проекта в просмотров Gantt и ресурсах.
📎 Входной файл: представление диаграммы 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 лаконичен, полностью управляем и совместим с серверными средами.
Сравнительная таблица
Feature | 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 для .NET предоставляет высокоуровневый API, который обеспечивает эффективное управление ресурсами в файлах MPP — и все это без необходимости установки Microsoft Project. Это делает его идеальным решением для веб-приложений, служб и кроссплатформенных рабочих нагрузок .NET.
Для связанных сценариев ознакомьтесь с: