Microsoft Projectは、プロジェクトマネージャーがプロジェクトを効率的に管理しやすくする人気のあるプロジェクト管理ソフトウェアです。これにより、マネージャーはタスクとリソースの作成、リソースへのタスクの割り当て、プロジェクトの進行状況の追跡、予算の管理、およびその他のプロジェクト関連の操作を実行できます。プログラムでMSProjectファイルを作成および管理するために、MicrosoftはMSOfficeAutomationを提供しています。ただし、その他の欠陥とともに、MSOfficeをインストールする必要があります。このギャップを埋めるために、Asposeは、Aspose.Tasks for .NETとして.NETアプリケーション用のMSProject自動化ソリューションを提供します。

Aspose.Tasks for .NETは、C#またはVB.NETを使用してプログラムでMS Projectファイル(.mpp / .xml)を作成できる機能豊富なAPIです。さらに、タスク、リソース、およびカレンダーを操作するためのさまざまな機能を提供します。この記事では、Aspose.Tasks for .NETを使用してMSProjectファイルを作成し、C#を使用してタスクとリソースを操作する方法を説明します。記事の残りの部分は、次のセクションに分かれています。

C#を使用してMSProjectファイルを作成する

MPPは、MSProjectファイルに使用されるMicrosoft独自のファイル形式です。ただし、プロジェクトデータをXMLファイルに保存して、さまざまなアプリケーション間で共有することもできます。新しいプロジェクトを最初から作成するのは簡単な作業であり、次の手順を使用して実行できます。

次のコードサンプルは、C#を使用してMSProjectファイルを作成する方法を示しています。

MSProjectファイルをMPPとして保存する

// 新しいプロジェクトを作成する
Project project = new Project();

// .mppファイルとして保存します
project.Save("New Project.mpp", SaveFileFormat.MPP);

MSProjectファイルをXMLとして保存する

// 新しいプロジェクトを作成する
Project project = new Project();

// .xmlファイルとして保存します
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

C#を使用してMSProjectファイルにタスクを追加する

空のMSProjectファイルは、タスクとリソースがないと役に立ちません。それでは、タスクを作成してプロジェクトに追加する方法を見てみましょう。タスクは、サブタスクのグループを含む単一のタスクまたは要約タスクである可能性があります。以下は、MSProjectファイルにタスクを追加する手順です。

  • Projectオブジェクトを作成して初期化します。
  • Project.RootTask.Children.Add(string)メソッドを使用して、プロジェクトのTasksコレクションに新しいサマリータスクを追加します。
  • Task.Children.Add(string)メソッドを使用して、サマリータスクにサブタスクを追加します。
  • Project.Save()メソッドを使用してプロジェクトを保存します。

次のコードサンプルは、C#を使用してタスクを作成してMSProjectファイルに追加する方法を示しています。

// 新しいプロジェクトを作成する
Project project = new Project();

// タスクとサブタスクを追加する
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// ファイルを保存
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

次のコードサンプルは、期間、開始日時など、タスクのさまざまなプロパティを設定する方法を示しています。

// プロジェクトを作成する
Project project = new Project();

// タスクを追加し、タスクのプロパティを設定します
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

C#を使用してMSProjectファイルにリソースを追加する

リソースは、プロジェクトでタスクを実行することになっているエンティティです。したがって、プロジェクトに取り組むためのリソースがなければ、プロジェクトは不可能です。それでは、リソースを作成してプロジェクトに追加する方法を確認しましょう。以下は、MSProjectファイルにリソースを追加する手順です。

  • Projectクラスを使用して新しいプロジェクトを作成します。
  • Project.Resources.Add(string)メソッドを使用して、プロジェクトのResourcesコレクションに新しいリソースを追加します。
  • Project.Save()メソッドを使用してプロジェクトを保存します。

次のコードサンプルは、C#を使用してMSProjectファイルにリソースを追加する方法を示しています。

// プロジェクトを作成する
Project project = new Project();

// リソースを追加する
Resource resource = project.Resources.Add("Rsc");

// プロジェクトを保存
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

次のコードサンプルは、開始日時、タイプなどのリソースのプロパティを設定します。

// プロジェクトを作成する
Project project = new Project();

// リソースを追加する
Resource resource = project.Resources.Add("Rsc");

// プロジェクトを保存
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

C#を使用してプロジェクトのリソースにタスクを割り当てる

プロジェクトへのタスクとリソースの追加が完了したら、どのタスクをどのリソースで実行するかを指定できます。したがって、タスクを各リソースに割り当てます。プロジェクト内のリソースにタスクを割り当てる手順は次のとおりです。

  • Projectクラスを使用してプロジェクトを作成またはロードします。
  • プロジェクトに新しいリソースを追加し、日付形式、開始日などのプロパティを設定します。
  • プロジェクトに新しいタスクを追加し、開始日時、期間などのプロパティを設定します。
  • タスクとそれぞれのリソースをProject.ResourceAssignmentsコレクションに追加して、タスクの割り当てを実行します。
  • Project.Save()メソッドを使用してプロジェクトを保存します。

以下は、MSProjectファイルでタスクを作成してリソースに割り当てる方法の完全なコードサンプルです。

// プロジェクトを作成する
Project project = new Project("New Project.mpp")
{
    CalculationMode = CalculationMode.Automatic
};

// プロパティを設定する
project.Set(Prj.DateFormat, DateFormat.DateDddMmDdYy);
project.Set(Prj.StartDate, new DateTime(2019, 9, 16, 9, 0, 0));
project.Set(Prj.NewTasksAreManual, false);
project.Set(Prj.ActualsInSync, false);

// リソースを追加する
Resource workResource = project.Resources.Add("Servente (Work)");
workResource.Set(Rsc.Name, "Servente (Work)");
workResource.Set(Rsc.Initials, "S");
workResource.Set(Rsc.Type, ResourceType.Work);
workResource.Set(Rsc.StandardRateFormat, RateFormatType.Hour);
workResource.Set(Rsc.Code, "1503");

Resource materialResource = project.Resources.Add("Tijolo (Material)");
materialResource.Set(Rsc.Name, "Tijolo (Material)");
materialResource.Set(Rsc.Initials, "T");
materialResource.Set(Rsc.Type, ResourceType.Material);
materialResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
materialResource.Set(Rsc.Code, "21341");

// タスクを追加する
Task task1 = project.RootTask.Children.Add("Task - 01");
task1.Set(Tsk.IsRollup, new NullableBool(true));
task1.Set(Tsk.IsPublished, new NullableBool(false));
Task task2 = task1.Children.Add("Task - 01.01");
task2.Set(Tsk.IsRollup, new NullableBool(true));
task2.Set(Tsk.IsPublished, new NullableBool(false));
Task task3 = task2.Children.Add("Task - 01.01.001");
task3.Set(Tsk.IsEstimated, new NullableBool(false));
task3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0));
task3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.IsRollup, new NullableBool(true));
task3.Set(Tsk.IsPublished, new NullableBool(false));

// タスクを割り当てる
ResourceAssignment assignment1 = project.ResourceAssignments.Add(task3, materialResource);
assignment1.Set(Asn.Delay, project.GetDuration(40, TimeUnitType.Hour));
assignment1.Set(Asn.Start, new DateTime(2019, 9, 23, 9, 0, 0));
assignment1.Set(Asn.Finish, new DateTime(2019, 9, 27, 18, 0, 0));
ResourceAssignment assignment2 = project.ResourceAssignments.Add(task3, workResource);
assignment2.Set(Asn.Work, project.GetDuration(56, TimeUnitType.Hour));
assignment2.Set(Asn.Start, new DateTime(2019, 9, 16, 9, 0, 0));
assignment2.Set(Asn.Finish, new DateTime(2019, 9, 24, 18, 0, 0));

// 期待されるMPPと完全に一致する
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// プロジェクトを保存
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

C#を使用してプロジェクトにカレンダーを追加する

カレンダーは、プロジェクトのスケジュールを定義するために使用されるプロジェクトの主要なエンティティの1つでもあります。カレンダーを使用すると、プロジェクトマネージャーはプロジェクトのタイムラインを作成できます。プロジェクトにカレンダーを追加する手順は次のとおりです。

  • Projectクラスを使用してプロジェクトを作成またはロードします。
  • 新しいCalendarProject.Calendarsコレクションに追加します。
  • Calendarオブジェクトを使用してスケジュールを作成します。
  • プロジェクトを保存します。

次のコードサンプルは、C#を使用してプロジェクトにカレンダーを追加する方法を示しています。

// プロジェクトインスタンスを作成する
Project project = new Project();

// カレンダーを定義する
Calendar cal = project.Calendars.Add("Calendar1");

// 月曜日から木曜日までの営業日をデフォルトのタイミングで追加します
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
cal.WeekDays.Add(new WeekDay(DayType.Saturday));
cal.WeekDays.Add(new WeekDay(DayType.Sunday));

// 金曜日を短い就業日として設定します
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// 作業時間を設定します。 DateTimeの時間部分のみが重要です
WorkingTime wt1 = new WorkingTime();
wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
WorkingTime wt2 = new WorkingTime();
wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
myWeekDay.WorkingTimes.Add(wt1);
myWeekDay.WorkingTimes.Add(wt2);
myWeekDay.DayWorking = true;
cal.WeekDays.Add(myWeekDay);

// プロジェクトを保存
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

ダウンロードまたはインストール

ダウンロードAspose.Tasks for .NET DLLを使用するか、NuGetを使用してプロジェクトにインストールできます。

Aspose.Tasks for .NETを無料でお試しください

Asposeは、試用期間の制限なしに製品を試すための無料の一時ライセンスを提供しています。 こちらから入手できます。

関連項目