Browse our Products

Aspose.Tasks for C++ 22.4 Release Notes

All Changes

KeySummaryIssue Type
TASKSNET-4602Extend XER import to support XER files with more than 1 projectsFeature
TASKSNET-10500Add a way to specify behavior of task constraints import for XER formatEnhancement
TASKSNET-10468Add support of reading User Defined Fields for Primavera XER formatEnhancement
TASKSNET-10520Fix reading \ writing of PreleveledStart and PreleveledFinish fieldsBug
TASKSNET-10519Fix task ‘Notes’ icon is incorrectly shown when MPP saved by Aspose.Tasks is opened using MS ProjectBug
TASKSNET-10508Fix calculation of formulaBug
TASKSNET-10507Fix reading of Activity Codes from XER: some codes are missingBug
TASKSNET-10497Fix calculation of PercentComplete and PercentWorkComplete for tasks read from XER fileBug
TASKSNET-10482Fix incorrect Start\Finish dates of task with zero durationBug
TASKSNET-4691Fix incorrect writing of extended attributes for specific version of MPP 2003 formatBug

Public API and Backwards Incompatible Changes

The following public types were added:Description
Aspose.Tasks.PrimaveraReadOptionsAllows to specify additional options when reading Primavera Xml or Primavera Xer files.
Aspose.Tasks.PrimaveraXerReaderRepresents a reader to read Project UIDs from Primavera XER file
Aspose.Tasks.UndefinedConstraintHandlingBehaviorSpecifies the behavior used to handle tasks with undefined constraints.
The following public methods and properties were added:Description
Aspose.Tasks.LoadOptions.PrimaveraReadOptionsGets or sets a specified instance of the PrimaveraReadOptions class which can be used to customize the behavior of loading Primavera formats (Primavera P6 XER or Primavera P6 Xml).
Aspose.Tasks.PrimaveraReadOptions.#ctorInitializes a new instance of the PrimaveraReadOptions class.
Aspose.Tasks.PrimaveraReadOptions.ProjectUidGets or sets the UID of a project to read from file containing multiple projects.
Aspose.Tasks.PrimaveraReadOptions.UndefinedConstraintHandlingBehaviorSpecifies the behavior used to process tasks with undefined constraints read from XER format.
Aspose.Tasks.PrimaveraXerReader.#ctor(System.String)Initializes a new instance of the PrimaveraXerReader class.
Aspose.Tasks.PrimaveraXerReader.#ctor(System.IO.Stream)Initializes a new instance of the PrimaveraXerReader class.
Aspose.Tasks.PrimaveraXerReader.GetProjectUidsReturn a list of the projects’ unique identifiers.
Aspose.Tasks.Project.#ctor(System.IO.Stream,Aspose.Tasks.PrimaveraReadOptions)Initializes a new instance of the Project class from the Stream
Aspose.Tasks.Project.#ctor(System.String,Aspose.Tasks.PrimaveraReadOptions)Initializes a new instance of the Project class from a template (existent MPP or MPT file
The following public enumerations were added:Description
Aspose.Tasks.UndefinedConstraintHandlingBehavior.NoneThe default behavior for loading from XER format.
Aspose.Tasks.UndefinedConstraintHandlingBehavior.SubstituteWithStartNoEarlierThanConstraints with type ‘ConstraintType.StartNoEarlierThan’ and date = Start are added for tasks with ‘Undefined’ constraint.

Examples and additional notes

In this release we focused on improvement of Primavera XER format support.

Related issue: TASKSNET-4602 - Extend XER import to support XER files with more than 1 projects

The support of reading of XER files containing multiple projects was added. Also PrimaveraReadOptions class was introduced to make a unified API for both Primavera XML and Primavera XER formats reading. PrimaveraReadOptions.ProjectUid can be used to specify ID of project to read. You can use PrimaveraXerReader to read IDs of projects contained in .XER file:

string xerFile = "test.xer";
PrimaveraXerReader reader = new PrimaveraXerReader(xerFile);
var projectUids = reader.GetProjectUids();
var projectId = projectUids[0];

var firstProject = new Project(xerFile,
    new PrimaveraReadOptions()
    {
        ProjectUid = projectId
    });

Related issue: TASKSNET-10500 - Add a way to specify behavior of task constraints import for XER format

PrimaveraReadOptions.UndefinedConstraintHandlingBehavior was added to make it possible to specify behavior used to handle tasks with Undefined contraint when reading project. Prior to 22.4 the default behavior was to add “StartNoEarlier” constraint with “Start” date for these tasks. Now the default behavior is “None” (no constraints are added).

var firstProject = new Project("test.xer",
    new PrimaveraReadOptions()
    {
        ProjectUid = 1,
        UndefinedConstraintHandlingBehavior = UndefinedConstraintHandlingBehavior.SubstituteWithStartNoEarlierThan
    });