Browse our Products
Aspose.Tasks for C++ 25.11 Release Notes
This page contains release notes information for Aspose.Tasks for C++ 25.11.
All Changes
| Key | Summary | Issue Type |
|---|---|---|
| TASKSNET-11583 | Add reading of calendar-specific “Hours per Day” setting from Primavera formats. | Enhancement |
| TASKSNET-11582 | Add reading of “Define Critical Activities” option from Primavera formats and initialization of “Task.IsCritical” flag | Enhancement |
| TASKSNET-11552 | Add an API to allow reading projects’ Uids and Names from Primavera DB | Enhancement |
| TASKSNET-11620 | Fix incorrect baseline cost timephased data when assignment’s calendar is different from baseline calendar | Bug |
| TASKSNET-11615 | Fix calculations related to a material resource’s assignment for task with assigned work resources | Bug |
| TASKSNET-11612 | Fix calculation of resource assignments with actual work when parent task duration is changed | Bug |
| TASKSNET-11611 | Fix calculation of non started (without actual work reported) resource assignments when parent task duration is changed | Bug |
| TASKSNET-11610 | Investigate and fix rounding errors when work contour duration is changed | Bug |
| TASKSNET-11609 | Fix incorrect baseline work timephased data for the specific file | Bug |
| TASKSNET-11607 | Fix incorrect calculation of material resource calendar | Bug |
| TASKSNET-11595 | Fix incorrect generation of Timephased Data when assignment start is at the end of working day | Bug |
| TASKSNET-11593 | Fix InvalidOperationException: ‘ToDouble encountered value with length 26’ when reading the specific file | Bug |
| TASKSNET-11589 | Fix calculation of contoured resource assignments when parent task duration is changed | Bug |
| TASKSNET-11586 | Fix inconsistent generation of Cost Timephased data after project is saved and opened | Bug |
| TASKSNET-11581 | Add an ability to set negative baseline cost | Bug |
| TASKSNET-11572 | Fix TasksReadingException when trying to read resource with no rates defined from Primavera DB | Bug |
| TASKSNET-11570 | Fix reading of calendar data from Primavera DB | Bug |
| TASKSNET-11563 | Inconsistent time-phased AssignmentUnit data for Material resources after repeated task duration edits | Bug |
| TASKSNET-11553 | Inconsistency in duration recalculation when editing a task with a Material resource and a custom extended-hours calendar | Bug |
| TASKSNET-11534 | Fix incorrect logic of RescheduleUncompletedWorkToStartAfter method | Bug |
Public API and Backwards Incompatible Changes
| The following public types were added: | Description |
|---|---|
| Aspose::Tasks::PrimaveraCalendarProperties | Represents Primavera-specific properties for a calendar read from Primavera files (XER of P6XML). |
| Aspose::Tasks::PrimaveraCriticalActivitiesDefiningMethod | Specifies the method for defining critical activities in Primavera. |
| Aspose::Tasks::PrimaveraDbReader | Represents a reader to read Project Info from Primavera DB |
| The following public methods and properties were added: | Description |
|---|---|
| Aspose::Tasks::Calendar::get_PrimaveraProperties() | Gets an object containing Primavera-specific properties for a calendar read from Primavera formats. |
| Aspose::Tasks::Primavera::PrimaveraProjectInfo::get_ShortName() | Gets project’s short name (Project ID). |
| Aspose::Tasks::PrimaveraBaseReader.#ctor | Initializes a new instance of the |
| Aspose::Tasks::PrimaveraCalendarProperties::get_HoursPerDay() | Gets amount of hours per day from ‘Time Periods’ settings of the calendar. |
| Aspose::Tasks::PrimaveraCalendarProperties::get_HoursPerWeek() | Gets amount of hours per week from ‘Time Periods’ settings of the calendar. |
| Aspose::Tasks::PrimaveraCalendarProperties::get_HoursPerMonth() | Gets amount of hours per month from ‘Time Periods’ settings of the calendar. |
| Aspose::Tasks::PrimaveraCalendarProperties::get_HoursPerYear() | Gets amount of hours per month from ‘Time Periods’ settings of the calendar. |
| Aspose::Tasks::PrimaveraDbReader.#ctor(Aspose::Tasks::Connectivity::PrimaveraDbSettings) | Initializes a new instance of the |
| Aspose::Tasks::PrimaveraDbReader::LoadProject(System.Int32) | Loads the project with the specified unique identifier. |
| Aspose::Tasks::PrimaveraProjectProperties::get_CriticalActivitiesDefiningMethod() | Gets the method for defining critical activities: Longest Path or Total Float approach. |
| Aspose::Tasks::PrimaveraProjectProperties::get_CriticalTotalFloatLimit() | Gets the threshold value used to define critical activities if TotalFloat method is used. |
| Aspose::Tasks::PrimaveraProjectProperties::get_ShortName() | Gets project’s short name (Project ID). |
| The following public enumerations were added: | Description |
|---|---|
| Aspose::Tasks::PrimaveraCriticalActivitiesDefiningMethod::TotalFloat | Activities with TotalSlack (Total Float in Primavera) less than or equal to the value of |
| Aspose::Tasks::PrimaveraCriticalActivitiesDefiningMethod::LongestPath | Activities on the longest path are marked as critical. |
Related issue: TASKSNET-11552 - Add an API to allow reading projects’ Uids and Names from Primavera DB.
Starting with the version 25.11, the new class PrimaveraDbReader can be used to retrieve a project’s short information.
string dir = "c:\\";
string fileName = dir + "Primavera.db";
var connectionString = string.Format("Data Source={0}", fileName);
var primaveraDbSettings = new PrimaveraDbSettings(connectionString, 0)
{
ProviderInvariantName = "System.Data.SQLite"
};
PrimaveraDbReader reader = new PrimaveraDbReader(primaveraDbSettings);
var projectInfos = reader.GetProjectInfos();
foreach (var info in projectInfos)
{
Console.WriteLine("{0} - '{1}' - '{2}', {3}", info.Uid, info.ShortName, info.Name, info.ExportFlag);
}
var project = reader.LoadProject(projectInfos[0].Uid);
Console.WriteLine("Project ID: " + project.PrimaveraProperties.ShortName); // when full project is loaded into an instance of the Project class, the value of Project ID' is mapped to Project.PrimaveraProperties.ShortName property.
Console.WriteLine("Project Name: " + project.Name);
Existing classes PrimaveraXmlReader and PrimaveraXerReader were modified so that the logic remains consistent across readers of Primavera formats (PrimaveraXmlReader, PrimaveraXerReader, PrimaveraDbReader).