タスクのリンクを追加します

Microsoft Project(MPP/XML)ファイルを使用しているときに、リンクが必要になることがよくあります。 VSTOでは、タスクリンクを追加するためにTaskDependencies.Add()が使用されます。 Aspose.Tasks は、project.tasklinks.add()を使用してタスクをリンクします。

VSTOは、msproject.project.tasks.get_uniqueid(taskId).taskdependenciesを使用してこれらのリンクへのアクセスを提供します。詳細なプロパティへのアクセスなどの要件を表示および処理するために使用できる依存関係のコレクションを提供します。

.net project.tasklinksのasopsion.tasksでは、linktype、predtask、succtaskなどのこれらのリンクの詳細なプロパティを表示およびアクセスするために使用できるリンクのコレクションを提供します。

この記事では、 VSTOおよび Aspose.Tasksの.NETを使用して、.NETアプリケーションにMPPファイルをロードし、リンクタスクを追加/表示する方法を示します。

VSTOを使用してタスクをリンク

VSTOを使用してタスクをリンクするには:

  1. Visual Studioで新しいプロジェクトを作成します。

  2. ソリューションエクスプローラーで、右クリックして[参照**を追加]を選択します。

  3. [comコンポーネント]タブを選択し、Microsoft Project 12.0オブジェクトライブラリを選択します。

  4. [ok]をクリックします。

これにより、コードの開始時にMicrosoft.office.interop.msprojectネームスペースがインポートされます。次の例からコードを使用して、タスクをリンクします。

 1Microsoft.office.interop.msproject.Application ProjectApplication = new Application();
 2
 3オブジェクトMissingValue = System.Reflection.Missing.Value;
 4
 5ProjectApplication.FileOpEnex(@"D:\ Aspose \ Migration \ SampleProject.mpp"
 6    missingValue, missingValue, missingValue, missingValue,
 7
 8    missingValue, missingValue, missingValue, missingValue,
 9
10    missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
11
12    missingValue, missingValue, missingValue, missingValue,
13
14
15
16
17Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
18
19project.Tasks.get_UniqueID(2).TaskDependencies.Add(project.Tasks.get_UniqueID(1), PjTaskLinkType.pjFinishToStart);
20
21project.Tasks.get_UniqueID(3).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
22
23project.Tasks.get_UniqueID(4).TaskDependencies.Add(project.Tasks.get_UniqueID(3), PjTaskLinkType.pjFinishToStart);
24
25project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(4), PjTaskLinkType.pjFinishToStart);
26
27project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
28
29// Display the dependencies
30
31foreach (Task tsk in project.Tasks)
32
33{
34
35    foreach (TaskDependency dep in project.Tasks.get_UniqueID(tsk.ID).TaskDependencies)
36
37    {
38
39        Console.WriteLine("From ID = " + dep.From.ID  + "=>To ID = " + dep.To.ID);
40
41    }
42
43    Console.WriteLine("____________________________________________________________");
44
45}
46
47// Save the project
48
49projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);

To link tasks in a project using Aspose.Tasks for .NET:

  1. Create a new project in Visual Studio.

  2. In the Solution Explorer, right-click and select Add Reference.

  3. Select .NET tab and select Aspose.Tasks.

  4. Click OK.

This imports the Aspose.Tasks namespace at the start of your code. Use the code from the following example to link tasks.

 1Project project = new Project("New Project.mpp");
 2
 3Task task1 = project.RootTask.Children.GetById(1);
 4Task task2 = project.RootTask.Children.GetById(2);
 5Task task3 = project.RootTask.Children.GetById(3);
 6Task task4 = project.RootTask.Children.GetById(4);
 7Task task5 = project.RootTask.Children.GetById(5);
 8
 9// Link the tasks
10TaskLink taskLink = project.TaskLinks.Add(task1, task2, TaskLinkType.FinishToStart);
11taskLink = project.TaskLinks.Add(task2, task3, TaskLinkType.FinishToStart);
12taskLink = project.TaskLinks.Add(task3, task4, TaskLinkType.FinishToStart);
13taskLink = project.TaskLinks.Add(task4, task5, TaskLinkType.FinishToStart);
14taskLink = project.TaskLinks.Add(task2, task5, TaskLinkType.FinishToStart);
15
16// Display links among the tasks
17TaskLinkCollection allinks = project.TaskLinks;
18foreach (TaskLink link in allinks)
19{
20    Console.WriteLine("From ID = " + link.PredTask.Get(Tsk.Id) + " => To ID = " + link.SuccTask.Get(Tsk.Id));
21    Console.WriteLine("________________________________________");
22}
23 
24project.Save("LinkTasks_out.mpp", SaveFileFormat.MPP);
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.