タスクとリソースを読む
Contents
[
Hide
Show
]MPPファイルを使用している間、プロジェクトのタスクとリソースを読む必要があるかもしれません。この記事では、 VSTOと asoppes.tasks for .netの両方を使用して、プロジェクトデータを読み取る方法の実際の概要を説明します。
導入
多くの場合、タスクとリソースを読むことは、プロジェクト分析の構築、レポートの生成、またはプロジェクトの整合性の検証における最初のステップです。 Microsoft Projectファイル(MPP)を使用すると、次のいずれかを使用して達成できます。
- VSTO(オフィス用のビジュアルスタジオツール) - Microsoft ProjectとCom Interopが必要です。
- .netのasops.tasks - Microsoftプロジェクトに依存せずにプロジェクトデータを操作するためのスタンドアロンAPI。
この記事では、両方のアプローチでタスクとリソース情報を抽出する方法を概説します。
VSTOを使用してタスクとリソースをお読みください
VSTOを使用してタスクとリソースのデータにアクセスするには:
- Visual Studioで新しいプロジェクトを作成します。
- comタブからMicrosoft Project 12.0オブジェクトライブラリへの参照を追加します。
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();
注記
- タスクとリソースには、
project.Tasks
とproject.Resources
を介してアクセスします。 - 各リソースの種類は、
PjResourceTypes
を使用して識別されます。 - VSTO は、Microsoft Project がインストールされ、実行時に使用可能であることを前提としています。
Aspose.Tasks for .NET を使用したタスクとリソースの読み取り
Aspose.Tasks for .NET を使用して同じことを実現するには、次の手順を実行します。
- 新しい Visual Studio プロジェクトを作成します。
- [.NET] タブで Aspose.Tasks への参照を追加します。
Aspose.Tasks
名前空間をインポートします。- 以下のコード例を使用します。
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}
ハイライト
- 「プロジェクト」オブジェクトは、タスクトラバーサルの「roottask.children」へのアクセスを提供します。
- リソースは「リソース」コレクションからアクセスされます。
- Aspose.Tasksは、Microsoftプロジェクトなしでは、カレンダー、拡張属性、ベースラインなどの高度な機能もサポートしています。
比較表
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 |
まとめ
マイクロソフトプロジェクトファイルを操作する際のタスクとリソースの抽出は、基礎的な機能です。 VSTOは、COM Interopを介してプロジェクトファイルを操作する方法を提供しますが、展開シナリオとプラットフォームの制限が限られていることに苦しんでいます。
.NETのAspose.Tasksは、プロジェクトデータを読み取り、処理するための軽量、クロスプラットフォーム、および保守可能な代替品を提供します。これは、最新のエンタープライズアプリケーションと自動化パイプラインに最適です。
Aspose.tasksを使用してプロジェクトデータアクセスを調査し続けるには、以下を参照してください。