Hinzufügen einer neuen Aufgabe mit Aspose.Tasks vs vsto
Während der Arbeit mit Microsoft Project (MPP/XML) -Dateien müssen Sie häufig neue Aufgaben hinzufügen. In diesem Artikel wird angezeigt, wie MPP -Dateien in Ihren .NET -Anwendungen geladen werden und neue Aufgaben mit herkömmlichen VSTO Interop -APIs und den modernen Aspose.Tasks für die .NET -Bibliothek hinzugefügt werden.
Überblick
Die Fähigkeit, Aufgaben programmatisch zu verwalten, ist für automatisierte Projektplanungsworkflows von entscheidender Bedeutung. Dieser Artikel zeigt, wie neue Aufgaben mit zwei Ansätzen in Microsoft -Projektdateien eingefügt werden:
- Microsoft Office Automation (VSTO): Stützt sich auf die installierte Microsoft -Projektanwendung und COM Interop.
- Aspose.Tasks FÜR .NET: Eine eigenständige .NET -Bibliothek, in der Microsoft -Projekt nicht installiert werden muss.
Beide Beispiele veranschaulichen das gleiche Szenario - Hinzufügen einer einzelnen Aufgabe mit dem Namen "" “Task1” " -, um Ihnen dabei zu helfen, die Unterschiede in der Syntax, der Abhängigkeiten und des Programmiermodells klar zu verstehen.
Fügen Sie eine Aufgabe mit VSTO hinzu
Der folgende Code zeigt, wie eine neue Aufgabe zu einer vorhandenen .mpp
-Datei mit VSTO (Visual Studio Tools for Office) hinzugefügt wird. Dieser Ansatz hängt von COM Interop ab und erfordert, dass das Microsoft -Projekt auf dem Computer installiert und ordnungsgemäß lizenziert werden kann.
1 Microsoft.Office.Interop.MSProject.Application projectApplication = new Application();
2
3 object missingValue = System.Reflection.Missing.Value;
4
5 projectApplication.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
12 Microsoft.Office.Interop.MSProject.Project project = projectApplication.ActiveProject;
13
14 Microsoft.Office.Interop.MSProject.Task task;
15 task = project.Tasks.Add("Task1", 1);
16
17 task.Start = "8/23/2012";
18 task.Duration = 3 * 8 * 60; // Duration in minutes (3 working days * 8 hours/day * 60 minutes)
19 task.Text1 = "Task1";
20
21 projectApplication.FileCloseAll(Microsoft.Office.Interop.MSProject.PjSaveType.pjSave);
Notes
- Duration must be specified in minutes, which is less intuitive compared to using time units directly.
- The API requires careful handling of optional parameters (
Missing.Value
) and COM resource cleanup. - The project file must be opened via
FileOpenEx
and explicitly saved and closed usingFileCloseAll
.
Add a Task Using Aspose.Tasks for .NET
In contrast, the code below shows how to accomplish the same task using Aspose.Tasks for .NET. This API works independently of Microsoft Project and is ideal for web applications, services, and containerized environments.
1 Project project = new Project("New Project.mpp");
2
3 Task task = project.RootTask.Children.Add("Task1");
4 task.Set(Tsk.ActualStart, DateTime.Parse("23-Aug-2012"));
5
6 // Set duration in hours
7 task.Set(Tsk.Duration, project.GetDuration(24, TimeUnitType.Hour));
8 task.Set(Tsk.DurationFormat, TimeUnitType.Day);
9
10 project.Save("AddNewTask_out.xml", SaveFileFormat.XML);
Highlights
– Aufgaben werden mithilfe eines sauberen Objektmodells unter „RootTask.Children“ erstellt. – Die Dauer kann mithilfe von „TimeUnitType“ in Stunden, Tagen oder anderen Einheiten angegeben werden. – Die Methode „Set“ ermöglicht typsichere, feldspezifische Aktualisierungen der Aufgabeneigenschaften. – Es ist keine COM-Interop- oder Office-Installation erforderlich – der Code läuft plattformübergreifend.
Zusammenfassung
Aspect | VSTO / Interop | Aspose.Tasks for .NET |
---|---|---|
Requires MS Project | ✅ Yes | ❌ No |
Dependency Type | COM (Microsoft.Office.Interop.MSProject) | Pure .NET |
Cross-platform support | ❌ Windows-only | ✅ Windows, Linux, macOS (via .NET) |
Deployment suitability | ⚠ Desktop/server only | ✅ Web, containers, serverless |
Code complexity | ⚠ High (verbose, boilerplate-heavy) | ✅ Simple and expressive |
Aspose.Tasks ermöglicht moderne, skalierbare und wartungsfreundliche Lösungen für die Arbeit mit Microsoft Project-Formaten. Die Migration von VSTO bietet mehr Flexibilität bei der Bereitstellung, höhere Zuverlässigkeit und eine benutzerfreundlichere API-Oberfläche.
Weitere Informationen finden Sie auf den folgenden Seiten: