Browse our Products

Aspose.Tasks for Python via .NET 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.primavera_propertiesGets an object containing Primavera-specific properties for a calendar read from Primavera formats.
aspose.tasks.primavera.PrimaveraProjectInfo.short_nameGets project’s short name (Project ID).
aspose.tasks.PrimaveraBaseReader.#ctorInitializes a new instance of the class.
aspose.tasks.PrimaveraCalendarProperties.hours_per_dayGets amount of hours per day from ‘Time Periods’ settings of the calendar.
aspose.tasks.PrimaveraCalendarProperties.hours_per_weekGets amount of hours per week from ‘Time Periods’ settings of the calendar.
aspose.tasks.PrimaveraCalendarProperties.hours_per_monthGets amount of hours per month from ‘Time Periods’ settings of the calendar.
aspose.tasks.PrimaveraCalendarProperties.hours_per_yearGets amount of hours per month from ‘Time Periods’ settings of the calendar.
aspose.tasks.PrimaveraDbReader.#ctor(PrimaveraDbSettings)Initializes a new instance of the class.
aspose.tasks.PrimaveraDbReader.load_project(int)Loads the project with the specified unique identifier.
aspose.tasks.PrimaveraProjectProperties.critical_activities_defining_methodGets the method for defining critical activities: Longest Path or Total Float approach.
aspose.tasks.PrimaveraProjectProperties.critical_total_float_limitGets the threshold value used to define critical activities if TotalFloat method is used.
aspose.tasks.PrimaveraProjectProperties.short_nameGets project’s short name (Project ID).
The following public enumerations were added:Description
aspose.tasks.PrimaveraCriticalActivitiesDefiningMethod.TOTAL_FLOATActivities with TotalSlack (Total Float in Primavera) less than or equal to the value of are marked as critical.
aspose.tasks.PrimaveraCriticalActivitiesDefiningMethod.LONGEST_PATHActivities 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).