Додавання нового завдання з aspose.tasks vs vsto

Працюючи з файлами Microsoft Project (MPP/XML), вам часто потрібно додавати нові завдання до проектів. У цій статті показано, як завантажувати файли MPP у ваші програми .NET та додати нові завдання, використовуючи традиційні API VSTO Interop та сучасний Aspope.Tasks для .NET бібліотеки.

Огляд

Можливість програмного управління завданнями є важливими для автоматизованих робочих процесів планування проекту. Ця стаття демонструє, як вставити нові завдання у файли Microsoft Project за допомогою двох підходів:

Обидва приклади ілюструють один і той же сценарій - додавання єдиного завдання під назвою " Task1 " - щоб допомогти вам чітко зрозуміти відмінності в синтаксисі, залежності та моделі програмування.

Додайте завдання за допомогою VSTO

Наступний код демонструє, як додати нове завдання до наявного файлу .mpp за допомогою VSTO (інструменти Visual Studio для Office). Цей підхід залежить від 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);

Notes

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.

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

Highlights

Summary

AspectVSTO / InteropAspose.Tasks for .NET
Requires MS Project✅ Yes❌ No
Dependency TypeCOM (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 enables modern, scalable, and maintainable solutions for working with Microsoft Project formats. Migrating from VSTO unlocks better deployment flexibility, improved reliability, and a more developer-friendly API surface.

To continue exploring, check out the following pages:

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.