Чтение задач и ресурсов
Работая с файлами MPP, вам может потребоваться прочитать задачи и ресурсы из вашего проекта. В этой статье представлен практический обзор того, как читать данные проекта, используя как VSTO, так и Aspose.Tasks для .NET.
Введение
Чтение задач и ресурсов часто является первым шагом в создании аналитики проекта, создании отчетов или проверке целостности проекта. С помощью файлов Project Microsoft (MPP) это может быть достигнуто с помощью либо:
- VSTO (инструменты Visual Studio для Office) - Требуется Microsoft Project и Com Interop.
- aspose.tasks для .net - автономный API для работы с данными проекта, не полагаясь на Project Microsoft.
В этой статье описывается, как извлечь информацию о задачах и ресурсах в обоих подходах.
Читать задачи и ресурсы с помощью VSTO
Чтобы получить доступ к данным задач и ресурсов с помощью VSTO:
- Создайте новый проект в Visual Studio.
- Добавьте ссылку на Microsoft Project 12.0 Библиотека объектов с вкладки com.
- Импортируйте
microsoft.office.interop.msproject
пространство имен. - Используйте следующий пример кода.
1// Create Application object
2Application projectApplication = new ApplicationClass();
3object missingValue = System.Reflection.Missing.Value;
4
5// Open MPP file
6projectApplication.FileOpenEx(@"C:\Project1.mpp",
7 missingValue, missingValue, missingValue, missingValue,
8 missingValue, missingValue, missingValue, missingValue,
9 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
10 missingValue, missingValue, missingValue, missingValue,
11 missingValue);
12
13Project project = projectApplication.ActiveProject;
14
15// Read all tasks
16foreach (Task task in project.Tasks)
17{
18 Console.WriteLine("Reading Task: " + task.Name);
19 Console.WriteLine("ID: " + task.ID);
20 Console.WriteLine("Start: " + task.Start);
21 Console.WriteLine("Finish: " + task.Finish);
22 Console.WriteLine("===========================\n");
23}
24
25// Read all resources
26foreach (Resource resource in project.Resources)
27{
28 string resourceType = resource.Type switch
29 {
30 PjResourceTypes.pjResourceTypeCost => "Cost",
31 PjResourceTypes.pjResourceTypeMaterial => "Material",
32 PjResourceTypes.pjResourceTypeWork => "Work",
33 _ => "Unknown"
34 };
35
36 Console.WriteLine("Reading Resource: " + resource.Name);
37 Console.WriteLine("ID: " + resource.ID);
38 Console.WriteLine("Type: " + resourceType);
39 Console.WriteLine("===========================\n");
40}
41
42Console.ReadLine();
Notes
- Tasks and resources are accessed through
project.Tasks
andproject.Resources
. - Each resource’s type is identified using
PjResourceTypes
. - VSTO depends on Microsoft Project being installed and available at runtime.
Read Tasks and Resources Using Aspose.Tasks for .NET
To achieve the same using Aspose.Tasks for .NET:
- Create a new Visual Studio project.
- Add a reference to Aspose.Tasks via the .NET tab.
- Import the
Aspose.Tasks
namespace. - Use the code example below.
1Project project = new Project("New Project.mpp");
2
3// Load all tasks
4TaskCollection allTasks = project.RootTask.Children;
5
6// Loop through each task and read information related to tasks
7foreach (Task task in allTasks)
8{
9 Console.WriteLine("Reading Task " + task.Get(Tsk.Name));
10 Console.WriteLine("ID: " + task.Get(Tsk.Id));
11 Console.WriteLine("Start: " + task.Get(Tsk.Start));
12 Console.WriteLine("Finish: " + task.Get(Tsk.Finish));
13}
14
15// Loop through each resource and read information related to resources
16foreach (Resource resource in project.Resources)
17{
18 string resourceType = null;
19 switch (resource.Get(Rsc.Type))
20 {
21 case ResourceType.Material:
22 resourceType = "Material";
23 break;
24 case ResourceType.Work:
25 resourceType = "Work";
26 break;
27 default:
28 resourceType = "Cost";
29 break;
30 }
31
32 Console.WriteLine("Reading Resource " + resource.Get(Rsc.Name));
33 Console.WriteLine("ID: " + resource.Get(Rsc.Id));
34 Console.WriteLine("Type: " + resourceType);
35}
Основные моменты
- Объект
Project 'обеспечивает доступ к
roottask.children` для прохождения задачи. - Доступ к ресурсам доступны с помощью коллекции ресурсов.
- Aspose.tasks также поддерживает расширенные функции, такие как календари, расширенные атрибуты и базовые показатели - без Microsoft Project.
Сравнение таблицы
Feature | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires Microsoft Project | ✅ Yes | ❌ No |
Platform | 🖥 Windows only | ✅ Cross-platform |
Access Model | COM-based | Pure .NET API |
Ease of Deployment | ⚠ Limited | ✅ Self-contained |
Reading Resources | project.Resources | project.Resources |
Reading Tasks | project.Tasks | project.RootTask.Children |
Краткое содержание
Извлечение задач и ресурсов является основополагающей возможностью при работе с файлами Project Microsoft. В то время как VSTO предоставляет способ работать с файлами проекта через Com Interop, он страдает от ограниченных сценариев развертывания и ограничений на платформу.
Aspose.tasks для .NET предлагает легкую, кроссплатформенную и обслуживаемую альтернативу для чтения и обработки данных проекта-что делает его идеальным для современных предприятий и трубопроводов автоматизации.
Чтобы продолжить изучение доступа к данным проекта с помощью Aspose.tasks, см.