Hinzufügen von Links für Aufgaben

Die Verknüpfung von Aufgaben ist ein grundlegender Betrieb, wenn Projektabhängigkeiten in MCP -Projekten (Microsoft Project) (MPP/XML) -Dateien modellieren. Dieser Artikel zeigt, wie die Aufgabenabhängigkeiten sowohl VSTO als auch Aspose.Tasks für .NET addieren und visualisieren.

Einführung

Im Projektmanagement definieren Aufgabenverbindungen, wie Aktivitäten voneinander abhängen. Diese Abhängigkeiten-z. B. * Finish-to-Start * oder * Start-to-Start *-stellen sicher, dass Aufgaben einer logischen Ausführungssequenz folgen.

Wenn Sie programmatisch mit Microsoft Project arbeiten, können Sie diese Links mit beiden Links festlegen:

Im Folgenden finden Sie Beispiele für beide Ansätze für die Verknüpfung von Aufgaben.

Das folgende Beispiel zeigt, wie eine Kette von * Abhängigkeiten * abhängig von * mit Microsoft.Office.interop.msproject erstellt wird.

⚠ Requires Microsoft Project to be installed and accessible on the machine.

 1    Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
 2    object missingValue = System.Reflection.Missing.Value;
 3
 4    projectApplication.FileOpenEx(@"D:\Aspose\Migration\SampleProject.mpp",
 5        missingValue, missingValue, missingValue, missingValue,
 6        missingValue, missingValue, missingValue, missingValue,
 7        missingValue, missingValue, PjPoolOpen.pjPoolReadOnly,
 8        missingValue, missingValue, missingValue, missingValue,
 9        missingValue);
10
11    Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
12
13    // Add task dependencies using Finish-to-Start links
14    project.Tasks.get_UniqueID(2).TaskDependencies.Add(project.Tasks.get_UniqueID(1), PjTaskLinkType.pjFinishToStart);
15    project.Tasks.get_UniqueID(3).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
16    project.Tasks.get_UniqueID(4).TaskDependencies.Add(project.Tasks.get_UniqueID(3), PjTaskLinkType.pjFinishToStart);
17    project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(4), PjTaskLinkType.pjFinishToStart);
18    project.Tasks.get_UniqueID(5).TaskDependencies.Add(project.Tasks.get_UniqueID(2), PjTaskLinkType.pjFinishToStart);
19
20    // Print dependencies to console
21    foreach (Task tsk in project.Tasks)
22    {
23        foreach (TaskDependency dep in project.Tasks.get_UniqueID(tsk.ID).TaskDependencies)
24        {
25            Console.WriteLine("From ID = " + dep.From.ID + " => To ID = " + dep.To.ID);
26        }
27        Console.WriteLine("____________________________________________________________");
28    }
29
30    // Save and close the project
31    projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);

Wichtige Hinweise:

Aufgaben verknüpfen mit Aspose.Tasks für .NET

Aspose.Tasks bietet eine moderne und optimierte Möglichkeit, Aufgabenabhängigkeiten programmatisch zu definieren, ohne auf Microsoft Project oder COM-Komponenten angewiesen zu sein.

 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);

Highlights:

Die API ist intuitiv, präzise und bereit für die serverseitige Verwendung in ASP.NET, Azure-Funktionen oder Hintergrunddiensten.

Vergleichstabelle

FeatureVSTO / InteropAspose.Tasks for .NET
Requires MS Project✅ Yes❌ No
Supported Environments🖥 Desktop only☁ Desktop, Web, Cloud, Containers
Dependency TypeCOM InteropPure .NET assembly
API Simplicity⚠ Verbose and boilerplate-heavy✅ Clean and object-oriented
Task Link ManagementTaskDependencies collectionTaskLinks collection
Cross-platform support❌ No✅ Yes

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

Abschluss

Die Verknüpfung von Aufgaben ist entscheidend für die Aufrechterhaltung der Projektlogik. Während VSTO einen nativen Zugriff auf Microsoft -Projekt bietet, ist das Vertrauen in die Desktop -Umgebung und COM Interop für moderne Anwendungen weniger geeignet.

Aspose.Tasks FÜR .NET bietet eine saubere und skalierbare Alternative, die das Management von Aufgabenbeziehungen vereinfacht. Seine Flexibilität und Plattformunabhängigkeit machen es ideal für die Integration in CI/CD -Pipelines, Server -Apps und Webplattformen.

Um mehr über Aufgabenbeziehungen oder Planungslogik zu erfahren, erkunden Sie:

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.