Aspose.tasks vs VSTOを使用して新しいタスクを追加します
Microsoft Project(MPP/XML)ファイルを使用している間、プロジェクトに新しいタスクを追加する必要があることがよくあります。この記事では、.NETアプリケーションにMPPファイルをロードし、従来のVSTO Interop APIと.NETライブラリ用の最新のAsopsion.Tasksを使用して新しいタスクを追加する方法を示しています。
概要
自動化されたプロジェクト計画ワークフローには、プログラムでタスクをプログラム的に管理する機能が不可欠です。この記事では、2つのアプローチを使用して、新しいタスクをMicrosoftプロジェクトファイルに挿入する方法を示しています。
- Microsoft Office Automation(VSTO):インストールされているMicrosoft Project ApplicationとCom Interopに依存しています。
- .netのaspose.tasks:Microsoftプロジェクトのインストールを必要としないスタンドアロン.NETライブラリ。
どちらの例も、同じシナリオを示しています - " task1 "
という名前の単一のタスクを追加して、構文、依存関係、プログラミングモデルの違いを明確に理解するのに役立ちます。
VSTOを使用してタスクを追加します
次のコードは、VSTO(オフィス用のビジュアルスタジオツール)を使用して、既存の「.mpp`ファイルに新しいタスクを追加する方法を示しています。このアプローチはCOM Interopに依存しており、Microsoftプロジェクトをインストールし、マシンに適切にライセンスする必要があります。
1Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
2
3object missingValue = System.Reflection.Missing.Value;
4
5projectApplication.FileOpenEx(@"C:\Project1.mpp",
6 missingValue, missingValue, missingValue, missingValue,
7 missingValue, missingValue, missingValue, missingValue,
8 missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
9 missingValue, missingValue, missingValue, missingValue,
10 missingValue);
11
12Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
13
14Microsoft.Office.Interop.MSProject.Task task;
15task = project.Tasks.Add("Task1", 1);
16
17task.Start = "8/23/2012";
18task.Duration = 3 * 8 * 60; // Duration in minutes (3 working days * 8 hours/day * 60 minutes)
19task.Text1 = "Task1";
20
21projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);
注意事項
- 期間は分単位で指定する必要がありますが、時間単位を直接指定する場合と比べて直感的ではありません。
- API では、オプションパラメータ (
Missing.Value
) と COM リソースのクリーンアップを慎重に処理する必要があります。 - プロジェクトファイルは
FileOpenEx
で開き、FileCloseAll
で明示的に保存して閉じる必要があります。
Aspose.Tasks for .NET を使用してタスクを追加する
一方、以下のコードは Aspose.Tasks for .NET を使用して同じタスクを実行する方法を示しています。この API は Microsoft Project とは独立して動作し、Web アプリケーション、サービス、コンテナー化された環境に最適です。
1Project project = new Project("New Project.mpp");
2
3Task task = project.RootTask.Children.Add("Task1");
4task.Set(Tsk.ActualStart, DateTime.Parse("23-Aug-2012"));
5
6// Set duration in hours
7task.Set(Tsk.Duration, project.GetDuration(24, TimeUnitType.Hour));
8task.Set(Tsk.DurationFormat, TimeUnitType.Day);
9
10project.Save("AddNewTask_out.xml", SaveFileFormat.XML);
ハイライト
- タスクは、
RootTask.Children
配下のクリーンなオブジェクトモデルを使用して作成されます。 - 期間は、
TimeUnitType
を使用して時間、日、またはその他の単位で指定できます。 Set
メソッドは、タスクプロパティに対して型セーフでフィールド固有の更新を提供します。- COM 相互運用性や Office のインストールは不要です。コードはクロスプラットフォームで実行されます。
概要
側面 | VSTO / 相互運用性 | Aspose.Tasks for .NET |
---|---|---|
MS Project が必要 | ✅ はい | ❌ いいえ |
依存関係の種類 | COM (Microsoft.Office.Interop.MSProject) | 純粋な .NET |
クロスプラットフォームサポート | ❌ Windows のみ | ✅ Windows、Linux、macOS (.NET 経由) |
導入適合性 | ⚠ デスクトップ/サーバーのみ | ✅ Web、コンテナー、サーバーレス |
コードの複雑さ | ⚠ 高 (冗長、定型コード多用) | ✅ シンプルで表現力豊か |
Aspose.Tasks は、Microsoft Project 形式を扱うための、最新かつスケーラブルでメンテナンス性の高いソリューションを提供します。VSTO から移行することで、導入の柔軟性、信頼性、そして開発者にとってより使いやすい API サーフェスが向上します。
さらに詳しく知りたい場合は、以下のページをご覧ください。