C#を使用してプログラムでプロジェクトを計算する

Microsoft Projectのプロジェクトオプションで定義された計算モードを使用して、プロジェクトのスケジュールまたはコストを計算できます。プロジェクトスケジュールには、すべてのプロジェクトタスクの開始日と終了日が表示されます。 Microsoft Projectでは、プロジェクトを手動または自動で計算できます。 C#開発者は、.NETアプリケーションでプロジェクト計算モードを簡単に設定し、プロジェクトのプロパティを計算できます。この記事では、C#を使用してプログラムでプロジェクトを計算する方法を学習します。

この記事では、次のトピックについて説明します。

プログラムでプロジェクトを計算するC#API

プロジェクトの計算モードの設定には、Aspose.Tasks for .NETAPIを使用します。依存プロパティの値を計算するために、3つのプロジェクト計算モードを提供します。これらの計算モードは次のとおりです。

  • なし–必要なプロパティのみを設定し、プロジェクトの日付とコストを再計算しません。
  • 手動–プロジェクトの日付とコストを再計算せずに、依存オブジェクトのプロパティのみを設定します。
  • 自動–プロジェクトの日付とコストのプロパティを自動的に再計算します。

APIは、CalculationMode列挙で上記の計算モードを定義します。 ProjectクラスのCalculationModeプロパティを使用すると、CalculationModeの値を設定または取得できます。 APIでは、いくつかの変更を追加するために既存のプロジェクトを操作することもできます。さらに、基本的なプロジェクト管理操作と高度なプロジェクト管理操作をシームレスに実行できます。 APIのDLLをダウンロードするか、NuGetを使用してインストールしてください。

PM> Install-Package Aspose.Tasks

C#を使用した手動プロジェクト計算

計算モードを手動に設定し、以下の手順に従って確認できます。

  1. まず、Projectクラスのインスタンスを作成します。
  2. 次に、計算モードを手動に設定します。
  3. 次に、プロジェクトの開始日を指定します。
  4. 次に、タスク1やタスク2などの新しいタスクを追加します。
  5. 次に、手動モードで設定されたタスクのプロパティを読み取ります。
  6. その後、TaskLinksクラスのオブジェクトを初期化し、タスクをリンクします。
  7. 最後に、タスク2の開始日と終了日を確認します。

次のコードサンプルは、C#を使用してプロジェクトを手動で計算する方法を示しています。

// このコード例は、手動プロジェクト計算モードを設定する方法を示しています。
// プロジェクトのインスタンスを作成します
Project project = new Project();

// 計算モードを手動に設定します
project.CalculationMode = CalculationMode.Manual;

// プロジェクト開始日を設定する
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// 新しいタスクを追加する
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// 必要なプロパティは手動モードで設定されます
Console.WriteLine("Task1.Id Equals 1 : {0} ", task1.Get(Tsk.Id).Equals(1));
Console.WriteLine("Task1 OutlineLevel Equals 1 : {0} ", task1.Get(Tsk.OutlineLevel).Equals(1));
Console.WriteLine("Task1 Start Equals 15/04/2015 08:00 AM : {0} ", task1.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task1 Finish Equals 15/04/2015 05:00 PM : {0} ", task1.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task1 Duration Equals 1 day : {0} ", task1.Get(Tsk.Duration).ToString().Equals("1 day"));
Console.WriteLine("Task2 Start Equals 15/04/2015 08:00 AM : {0} ", task2.Get(Tsk.Start).Equals(new DateTime(2015, 4, 15, 8, 0, 0)));
Console.WriteLine("Task2 Finish Equals 15/04/2015 05:00 PM : {0} ", task2.Get(Tsk.Finish).Equals(new DateTime(2015, 4, 15, 17, 0, 0)));
Console.WriteLine("Task2 Duration Equals 1 day : {0} ", task2.Get(Tsk.Duration).ToString().Equals("1 day"));

// 2つのタスクをリンクすると、それらの日付は手動モードで再計算されません。
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// タスク2の日付に変更はありません
Console.WriteLine("Task1 Start Equals Task2 Start : {0} ", task1.Get(Tsk.Start).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).Equals(task2.Get(Tsk.Finish)));
Task1.Id Equals 1 : True
Task1 OutlineLevel Equals 1 : True
Task1 Start Equals 15/04/2015 08:00 AM : True
Task1 Finish Equals 15/04/2015 05:00 PM : True
Task1 Duration Equals 1 day : True
Task2 Start Equals 15/04/2015 08:00 AM : True
Task2 Finish Equals 15/04/2015 05:00 PM : True
Task2 Duration Equals 1 day : True
Task1 Start Equals Task2 Start : True
Task1 Finish Equals Task2 Finish : True

C#を使用した自動プロジェクト計算

計算モードを自動に設定し、以下の手順に従って検証できます。

  1. まず、Projectクラスのインスタンスを作成します。
  2. 次に、計算モードを自動に設定します。
  3. 次に、プロジェクトの開始日を設定します。
  4. 次に、タスク1やタスク2などの新しいタスクを追加します。
  5. その後、TaskLinksクラスのオブジェクトを初期化し、タスクをリンクします。
  6. 最後に、再計算された日付を確認します。

次のコードサンプルは、C#を使用してプロジェクトを自動的に計算する方法を示しています。

// このコード例は、自動プロジェクト計算モードを設定する方法を示しています。
// プロジェクトのインスタンスを作成します
Project project = new Project();

// 計算モードを自動に設定します
project.CalculationMode = CalculationMode.Automatic;

// プロジェクト開始日を設定する
project.Set(Prj.StartDate, new DateTime(2015, 4, 15));

// 新しいタスクを追加する
Aspose.Tasks.Task task1 = project.RootTask.Children.Add("Task 1");
Aspose.Tasks.Task task2 = project.RootTask.Children.Add("Task 2");

// リンクタスク
TaskLink link = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);

// 再計算された日付を確認する
Console.WriteLine("Task1 Start + 1 Equals Task2 Start : {0} ", task1.Get(Tsk.Start).AddDays(1).Equals(task2.Get(Tsk.Start)));
Console.WriteLine("Task1 Finish + 1 Equals Task2 Finish : {0} ", task1.Get(Tsk.Finish).AddDays(1).Equals(task2.Get(Tsk.Finish)));
Console.WriteLine("RootTask Finish Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.RootTask.Get(Tsk.Finish)));
Console.WriteLine("Project Finish Date Equals Task2 Finish : {0} ", task2.Get(Tsk.Finish).Equals(project.Get(Prj.FinishDate)));
Task1 Start + 1 Equals Task2 Start : True
Task1 Finish + 1 Equals Task2 Finish : True
RootTask Finish Equals Task2 Finish : True
Project Finish Date Equals Task2 Finish : True

C#にプロジェクト計算モードがありません

計算モードを自動に設定し、以下の手順に従って検証できます。

  1. まず、Projectクラスのインスタンスを作成します。
  2. 次に、計算モードを[なし]に設定します。
  3. 次に、プロジェクトの開始日を指定します。
  4. 次に、タスク1などの新しいタスクを追加します。
  5. 次に、タスクのプロパティを読み取ります。
  6. その後、タスク期間を日数で設定します。
  7. 最後に、タスクの開始日と終了日を確認します。

次のコードサンプルは、C#を使用してプロジェクト計算をnoneに設定する方法を示しています。

// このコード例は、プロジェクト計算モードを「なし」に設定する方法を示しています。
// プロジェクトのインスタンスを作成します
Project project = new Project();

// 計算モードをなしに設定します
project.CalculationMode = CalculationMode.None;

// 新しいタスクを追加する
Aspose.Tasks.Task task = project.RootTask.Children.Add("Task");

// IDも計算されていないことに注意してください
Console.WriteLine("Task.Id Equals 0 : {0} ", task.Get(Tsk.Id).Equals(0));
Console.WriteLine("Task.OutlineLevel Equals 0 : {0} ", task.Get(Tsk.OutlineLevel).Equals(0));
Console.WriteLine("Task Start Equals DateTime.MinValue : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Console.WriteLine("Task Duration Equals 0 mins : {0} ", task.Get(Tsk.Duration).ToString().Equals("0 mins"));

// 期間プロパティを設定する
task.Set(Tsk.Duration, project.GetDuration(2, TimeUnitType.Day));
Console.WriteLine("Task Duration Equals 2 days : {0} ", task.Get(Tsk.Duration).ToString().Equals("2 days"));
Console.WriteLine("Task Start Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Start).Equals(DateTime.MinValue));
Console.WriteLine("Task Finish Equals DateTime.MinValue  : {0} ", task.Get(Tsk.Finish).Equals(DateTime.MinValue));
Task.Id Equals 0 : True
Task.OutlineLevel Equals 0 : False
Task Start Equals DateTime.MinValue : True
Task Finish Equals DateTime.MinValue : True
Task Duration Equals 0 mins : True
Task Duration Equals 2 days : True
Task Start Equals DateTime.MinValue  : True
Task Finish Equals DateTime.MinValue  : True

無料ライセンスを取得する

無料の一時ライセンスを取得して、評価の制限なしにライブラリを試すことができます。

結論

この記事では、プロジェクトの計算モードをプログラムで設定する方法を学びました。また、C#を使用して、各計算モードで依存プロパティの値がどのように計算されるかについても見てきました。さらに、ドキュメントを使用して、Aspose.Tasks for .NET APIについて詳しく知ることができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目