Browse our Products

Aspose.Tasks for C++ 25.11 Release Notes

All Changes

KeySummaryIssue Type
TASKSNET-11583Add reading of calendar-specific “Hours per Day” setting from Primavera formats.Enhancement
TASKSNET-11582Add reading of “Define Critical Activities” option from Primavera formats and initialization of “Task.IsCritical” flagEnhancement
TASKSNET-11552Add an API to allow reading projects’ Uids and Names from Primavera DBEnhancement
TASKSNET-11620Fix incorrect baseline cost timephased data when assignment’s calendar is different from baseline calendarBug
TASKSNET-11615Fix calculations related to a material resource’s assignment for task with assigned work resourcesBug
TASKSNET-11612Fix calculation of resource assignments with actual work when parent task duration is changedBug
TASKSNET-11611Fix calculation of non started (without actual work reported) resource assignments when parent task duration is changedBug
TASKSNET-11610Investigate and fix rounding errors when work contour duration is changedBug
TASKSNET-11609Fix incorrect baseline work timephased data for the specific fileBug
TASKSNET-11607Fix incorrect calculation of material resource calendarBug
TASKSNET-11595Fix incorrect generation of Timephased Data when assignment start is at the end of working dayBug
TASKSNET-11593Fix InvalidOperationException: ‘ToDouble encountered value with length 26’ when reading the specific fileBug
TASKSNET-11589Fix calculation of contoured resource assignments when parent task duration is changedBug
TASKSNET-11586Fix inconsistent generation of Cost Timephased data after project is saved and openedBug
TASKSNET-11581Add an ability to set negative baseline costBug
TASKSNET-11572Fix TasksReadingException when trying to read resource with no rates defined from Primavera DBBug
TASKSNET-11570Fix reading of calendar data from Primavera DBBug
TASKSNET-11563Inconsistent time-phased AssignmentUnit data for Material resources after repeated task duration editsBug
TASKSNET-11553Inconsistency in duration recalculation when editing a task with a Material resource and a custom extended-hours calendarBug
TASKSNET-11534Fix incorrect logic of RescheduleUncompletedWorkToStartAfter methodBug

Public API and Backwards Incompatible Changes

The following public types were added:Description
Aspose::Tasks::PrimaveraCalendarPropertiesRepresents Primavera-specific properties for a calendar read from Primavera files (XER of P6XML).
Aspose::Tasks::PrimaveraCriticalActivitiesDefiningMethodSpecifies the method for defining critical activities in Primavera.
Aspose::Tasks::PrimaveraDbReaderRepresents 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.#ctorInitializes a new instance of the class.
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 class.
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::TotalFloatActivities with TotalSlack (Total Float in Primavera) less than or equal to the value of are marked as critical.
Aspose::Tasks::PrimaveraCriticalActivitiesDefiningMethod::LongestPathActivities 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).