タスクとリソースを読む

MPPファイルを使用している間、プロジェクトのタスクとリソースを読む必要があるかもしれません。この記事では、 VSTOasoppes.tasks for .netの両方を使用して、プロジェクトデータを読み取る方法の実際の概要を説明します。

導入

多くの場合、タスクとリソースを読むことは、プロジェクト分析の構築、レポートの生成、またはプロジェクトの整合性の検証における最初のステップです。 Microsoft Projectファイル(MPP)を使用すると、次のいずれかを使用して達成できます。

この記事では、両方のアプローチでタスクとリソース情報を抽出する方法を概説します。

VSTOを使用してタスクとリソースをお読みください

VSTOを使用してタスクとリソースのデータにアクセスするには:

  1. Visual Studioで新しいプロジェクトを作成します。
  2. comタブからMicrosoft Project 12.0オブジェクトライブラリへの参照を追加します。
  3. microsoft.office.interop.msprojectネームスペースをインポートします。
  4. 次のサンプルコードを使用します。
 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();

注記

Aspose.Tasks for .NET を使用したタスクとリソースの読み取り

Aspose.Tasks for .NET を使用して同じことを実現するには、次の手順を実行します。

  1. 新しい Visual Studio プロジェクトを作成します。
  2. [.NET] タブで Aspose.Tasks への参照を追加します。
  3. Aspose.Tasks 名前空間をインポートします。
  4. 以下のコード例を使用します。
 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}

ハイライト

比較表

FeatureVSTO / InteropAspose.Tasks for .NET
Requires Microsoft Project✅ Yes❌ No
Platform🖥 Windows only✅ Cross-platform
Access ModelCOM-basedPure .NET API
Ease of Deployment⚠ Limited✅ Self-contained
Reading Resourcesproject.Resourcesproject.Resources
Reading Tasksproject.Tasksproject.RootTask.Children

まとめ

マイクロソフトプロジェクトファイルを操作する際のタスクとリソースの抽出は、基礎的な機能です。 VSTOは、COM Interopを介してプロジェクトファイルを操作する方法を提供しますが、展開シナリオとプラットフォームの制限が限られていることに苦しんでいます。

.NETのAspose.Tasksは、プロジェクトデータを読み取り、処理するための軽量、クロスプラットフォーム、および保守可能な代替品を提供します。これは、最新のエンタープライズアプリケーションと自動化パイプラインに最適です。

Aspose.tasksを使用してプロジェクトデータアクセスを調査し続けるには、以下を参照してください。

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.