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:
- VSTO und COM Interop: eng mit der Microsoft Project Desktop -Anwendung gekoppelt.
- Aspose.Tasks FÜR .NET: Eine plattformunabhängige, serversichere API zur Manipulation von Projektdateien.
Im Folgenden finden Sie Beispiele für beide Ansätze für die Verknüpfung von Aufgaben.
Linkaufgaben mit VSTO Link
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:
TaskDependencies.Add()
verknüpft Vorgänger und Nachfolger mithilfe eines definiertenPjTaskLinkType
.- Interop erfordert ausführlichen Code und einen sorgfältigen Umgang mit COM-Objekten.
- Die Methode
get_UniqueID(taskID)
dient zum Zugriff auf bestimmte Aufgaben zum Verknüpfen.
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:
- `project.tasklinks.add (Task1, Task2, TaskLinkType.finishtostart) # fügt einen direkten Zusammenhang zwischen zwei verschiedenen Aufgaben hinzu.
- Alle Aufgabenbeziehungen werden im „TaskLinkCollection“ gespeichert.
- Jeder Link enthält Eigenschaften wie „PredTask“, „succtask“, „linkType“ und „lag“.
Die API ist intuitiv, präzise und bereit für die serverseitige Verwendung in ASP.NET, Azure-Funktionen oder Hintergrunddiensten.
Vergleichstabelle
Feature | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires MS Project | ✅ Yes | ❌ No |
Supported Environments | 🖥 Desktop only | ☁ Desktop, Web, Cloud, Containers |
Dependency Type | COM Interop | Pure .NET assembly |
API Simplicity | ⚠ Verbose and boilerplate-heavy | ✅ Clean and object-oriented |
Task Link Management | TaskDependencies collection | TaskLinks 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: