Code documentation was improved significantly. Some previously undocumented members now have descriptions.
The headers_dir_name and sources_dir_name options were added. They are used to rename the include and source directories respectively.
Missing documentation for the exception classes was added.
The string.Join(dlm, IEnumerable<string>) method was implemented.
The generate_begin_end_methods option was added. This option is used to generate the begin and end methods for the classes and structures that implement the IEnumberable generic interface.
The CppGenerateBeginEndMethods attribute was added. This attribute is applied to fields and auto properties of any classes and structures. It is used to generate the begin and end methods. The important condition: types of fields and auto properties must contain the begin and end methods.
The CppNoBeginEndMethods was added. This attribute is used to disable generation of the begin and end methods when the generate_begin_end_methods option is enabled.
The invalid behavior of the String.LastIndexOf(substr, stringComparison) method was fixed.
The invalid behavior of the XPathNavigator::GetAttribute(name. nsURI) method was fixed for the case when the nsURI param is empty or blank.
The performance of the Path::HasInvalidChars method was improved.
Missing #include <cstdint> was added for some cases.
The following code foreach (T item in this) was ported to for (T item: this) without dereferencing for cases when the foreach loop is ported to range-based for. Fixed.
An access operator was changed for cases when code examples from comments were translated.
Now a chain of methods calls in code examples from comments can be translated.
Now co-variant array conversion at the method call is translated correctly.
When building an SDK-style project that contained the reference to another SDK-style project using Buildalyzer, product dll was deleted during porting of the first project, and porting of the second project failed because a product assembly was not found. Fixed.
Drawing of dash caps for closed curves was fixed for cases when LineCap had the LineCap::NoAnchor type.
Content of codeporting.native.cs2cpp-config.cmake was improved.
The PRODUCT_NAME and ORIGINAL_FILE_NAME properties were deleted from version_defines.h.
Logs of the comments translator were optimized.
Translation of fields in code examples from comments was improved.
The performance of converting of the Decimal type to integral types was improved.
The missing GC.Collect and GC.get_MaxGeneration methods were added.
The support of Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) was added.
The BrotliStream class is marked as final. The type of some class fields was changed from void * to std::unique_ptr<void, std::function<const void(void*)>>.
The Region::get_Clip method implementation was fixed.
The GraphicsPath::NeedConvertCurves method implementation was fixed.
The performance of the XmlDocument::idx_get, XmlElement::GetAttribute, XmlElement::HasAttribute, XmlElement::SetAttribute, and XmlElement::idx_get methods was improved.
Now the Func class inherits MulticastDelegate.
A wildcard for a return type didn’t work in the CppSkipEntity attribute when the porter couldn’t resolve a return type. Fixed.
Enum underlying types deduction is moved to pre-translate analysis phase for proper includes generation. Race condition is fixed.
The TimeZone::GetDaylightChanges method was added.
The CppForceInclude attribute loop reference lookup override was fixed.
Please consult respective sections of our wiki for more information.
Full List of Issues Covering all Changes in this Release
Simplify null-conditional operators
Support CodePorting.Native Cs2Cpp
Fix invalid behaviour of String.LastIndexOf(substr, stringComparison) in asposecpplib
Fix XPathNavigator::GetAttribute(name. nsURI) for case when nsURI is empty or blank.
Add porter options to rename source directories
Improve Path::HasInvalidChars performance
CsToCppPorter - attribute condition checking for case returnType='*'
CsToCppPorter - not generated “#include ”
Compilation error (Dictionary foreach)
Fix net namespace comments
“foreach in this” porting bug
Change an access operator when translating comments
Translate call of methods chain when porting comments
Co-variant array conversion at the method call doesn’t work
Provide examples of wrong porter work after “fewer includes” MR to the porter team
Fixing Porter to process SDK-Style C# project files
Unable to convert PDF to Word
Fix RegressionTests_v21_3.SLIDESNET_42212 test
Improve contents of codeporting.native.cs2cpp-config.cmake
Add Doxygen comments for exception classes
Fix warnings when generating “API Reference”
Implement string.Join(dlm, IEnumerable) method
Exclude PRODUCT_NAME and ORIGINAL_FILE_NAME from version_defines.h
Optimize xml navigation/move ICU_TO_XMLSTR_PARAM out from cycles body
asposecpp gets rebuilt after executing git commit and git push
Optimize logs of comments translator
Investigate asposecpplib’s Decimal casting to numeric types.