Table of ContentsTable of Content Search CodePorting.Native Product Family CodePorting.Native Cs2Cpp Getting Started Product Overview Installation Licensing How to use CodePorting.Native Cs2Cpp How to Use Command line to port and build Projects How to Use GUI to port and build Projects Developer Guide Porting Simple C# Projects Porting Simple Console Application Porting Simple Library Porting Simple NUnit Test Porting Dependent C# Projects Porting Dependent Console Application Porting Dependent Library Porting Dependent NUnit Test Porting Complex C# Projects How to Convert Complex C# Console Application to C++ How to Convert Complex C# Library to C++ How to Convert Complex C# NUnit Test to C++ Qt support What Converts to What AbstractClasses BreakStatements ClassAutoProperties ClassConstructors ClassEvents ClassFinalizers ClassGenericMethods ClassIndexers ClassMethods ClassProperties ClassStaticConstructor ClassStaticMethods ClassStaticProperties ClassVirtualMethods ContinueStatements Delegates DoWhileStatements Enums EnumTypeCast Exceptions ExpectedException ForeachStatements ForeachStatementsStd ForStatements GenericClasses GenericDelegates GenericInterfaces GenericStructs IfStatements LambdaExpressions NestedClasses ReturnStatements SimpleClass SimpleInterface SimpleStruct SimpleTest StandardTypeCast StaticClass SwitchStatements TestWithSetupMethods ThrowStatements TryCatchFinallyStatements TryCatchStatements TryFinallyStatements VarExpressions WhileStatements CodePorting Native Cs2Cpp Attributes CodePorting Native Cs2Cpp Configuration File CodePorting.Native Cs2Cpp Configuration File Structure Attributes in Configuration file Configuration file Nodes Configuration file Options Memory Management Model Memory Management Model Description Using aliasing constructor to create a smart pointer Cmake Support C++ code injection C++ user-defined exception classes Limitations and Bugs Porter Limitations and Bugs Library Limitations and Bugs Cpp Code Injection Release Notes 2022 CodePorting.Native Cs2Cpp 22.5 CodePorting.Native Cs2Cpp 22.4 CodePorting.Native Cs2Cpp 22.3 CodePorting.Native Cs2Cpp 22.2 CodePorting.Native Cs2Cpp 22.1 2021 CodePorting.Native Cs2Cpp 21.12 CodePorting.Native Cs2Cpp 21.11 CodePorting.Native Cs2Cpp 21.10.1 CodePorting.Native Cs2Cpp 21.10 CodePorting.Native Cs2Cpp 21.9 CodePorting.Native Cs2Cpp 21.8 CodePorting.Native Cs2Cpp 21.7 CodePorting.Native Cs2Cpp 21.6 CodePorting.Native Cs2Cpp 21.5 CodePorting.Native Cs2Cpp 21.4 CodePorting.Native Cs2Cpp 21.3 CodePorting.Native Cs2Cpp 21.2 CodePorting.Native Cs2Cpp 21.1 2020 CodePorting.Native Cs2Cpp 20.12 CodePorting.Native Cs2Cpp 20.11 CodePorting.Native Cs2Cpp 20.10 CodePorting.Native Cs2Cpp 20.9 CodePorting.Native Cs2Cpp 20.8 CodePorting.Native Cs2Cpp 20.7 CodePorting.Native Cs2Cpp 20.6 CodePorting.Native Cs2Cpp 20.5 CodePorting.Native Cs2Cpp 20.4 CodePorting.Native Cs2Cpp 20.3 CodePorting.Native Cs2Cpp 20.2 CodePorting.Native Cs2Cpp 20.1 2019 CodePorting.Native Cs2Cpp 19.1 CodePorting.Native Cs2Cpp 19.2 CodePorting.Native Cs2Cpp 19.3 CodePorting.Native Cs2Cpp 19.4 CodePorting.Native Cs2Cpp 19.4.1 CodePorting.Native Cs2Cpp 19.5 CodePorting.Native Cs2Cpp 19.6 CodePorting.Native Cs2Cpp 19.7 CodePorting.Native Cs2Cpp 19.8 CodePorting.Native Cs2Cpp 19.9 CodePorting.Native Cs2Cpp 19.10 CodePorting.Native Cs2Cpp 19.11 CodePorting.Native Cs2Cpp 19.12 2018 CodePorting.Native Cs2Cpp 18.9 CodePorting.Native Cs2Cpp 18.9.1 CodePorting.Native Cs2Cpp 18.10 CodePorting.Native Cs2Cpp 18.11 CodePorting.Native Cs2Cpp 18.12 HomeCodePorting.Native Product FamilyCodePorting.Native Cs2CppRelease Notes2020CodePorting.Native Cs2Cpp 20.5CodePorting.Native Cs2Cpp 20.5Major Features System::Xml namespace implementation was improved and extended. This includes implementing previously unsupported types and methods and establishing the basis for document signature support.Issues with Aspose products' embedded resources were fixed.Minor fixes Doxygen used to build project documentation was upgraded to 1.8.18 version. Some Doxygen warnings were fixed in header files.Natives' visualizers supplied for our proprietary types were improved.‘Nullptr to Nullable’ cast was fixed.Translation of Assert.Throws() was fixed. False positives are no longer generated if no exception is being thrown.XslCompiledTransform::Transform(const SharedPtr& input, const SharedPtr& results) was implemented.‘Where’ LINQ extension method was supported by the porter.GetType() was fixed for boxed enums.File::ReadAllText() now detects UTF-8 encoding automatically.A bug was fixed in porter placing output files above the project root if corresponding input files are placed above project root.‘ASPOSE_CONST’ legacy qualifier was removed by replacing it with a normal ‘const’ qualifier. Porter is no longer capable of generating it.CppConstWrapper attribute no longer requires CppNoConstMethod one to be placed to the same method, as the same behavior is now supported implicitly.Failures when loading inconsistent XML via XmlDocument::Load was fixed.Empty comments skipping was fixed in porter.The emplaced resource is no longer visible to other builds when the emplace_assembly_details option is enabled.String::Substring() method now performs correct boundary checks the same way .Net does.Assert.AreEqual() translation was extended to match the NUnit behavior when comparing streams (streams' contents get compared instead of pointers).64-bit long file sizes are now extracted properly.Invariant cutlure is now supported by String::LastIndexOf().DateTime::Parse() now throws same exceptions .Net does.Relative paths are now generated for embedded resources instead of absolute ones.Reflection support was improved.GCC compilation issues with has_operator_equal template were fixed.Please consult the respective sections of our wiki for more information.Full List of Issues Covering all Changes in this Release KeySummaryCategoryPDFCPP-1248Change for_each_member to generate weak linksTaskEMAILCPP-218Fix nullptr cast to NullableBugSLIDESCPP-2349Porter: Improve Assert.Throws() method translationImprovementPDFCPP-1264Fix XslCompiledTransform to support XmlReader.TaskPDFCPP-1269implement Linq WhereTaskPDFCPP-1271fix Asposecpplib - GetType() for boxed enums works incorrectlyBugPDFCPP-1272Fix Asposecpplib - IO.File.ReadAllText() does not detect utf8 encoding automaticallyBugPDFCPP-1273Fix CsToCppPorter - *.cs files started with “..” are being written to incorrect folderImprovementEMAILCPP-220Prepearing Aspose.Email for C++ Release 20.4TaskTASKSCPP-1392Implement dependent classes for reading XML content as DateTimeTaskTASKSCPP-1355Implement missing methods in XmlReader/XmlTextReader required for PWA porting.TaskSLIDESCPP-2265Implement XmlReaderSettings' MaxCharactersFromEntities and MaxCharactersInDocument propertiesTaskSLIDESCPP-2129Add support for document digital signingTaskSLIDESCPP-2340Fix FodpIO.TestCorruptedFodp testBugSLIDESCPP-2345Prepare C++ code examples (v20.4)TaskSLIDESCPP-2355Fix visibility of embedded resources when emplace_assembly_details option is enabledBugPDFCPP-1283Fix support embedded resources in CsToCppPorterImprovementPublic API and Backward Incompatible Changes ZipEntry::GetCompressedStream() method was supported.Signature of MemoryStream::ToArray() method was fixed.The CppConstMethod attribute no longer supports boolean arguments.Some previously unimplemented methods and types are now supported in System::Xml namespace.Reflection-related class support was improved.