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++ What Converts to What Abstract Classes Auto Properties Break Statements Class Constructors Continue Statements Delegates Do While Statemetns Enums TypeCast Enums Events Exceptions Expected Exceptions Finalizers For Statements ForEach Statements Generic Classes Generic Delegates Generic Interfaces Generic Methods Generic Structs If Statements Indexers Lambda Expressions Methods Nested Classes Properties Return Statements Simple Class Simple Interface Simple Struct Simple Test Standard TypeCast Static Class Static Constructor Static-Methods Static Properties Switch Statements Test with Setup Methods Throw Statements Try Catch Finally Statements Try Catch Statements Try Finally Statements Var Expressions Virtual Methods While Statements 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 Using aliasing constructor to create a smart pointer Cmake Support Limitations and Bugs Porter Limitations and Bugs Library Limitations and Bugs Cpp Code Injection Release Notes 2020 CodePorting.Native Cs2Cpp 20.11 CodePorting.Native Cs2Cpp 20.12 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 2021 CodePorting.Native Cs2Cpp 21.1 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 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 HomeCodePorting.Native Product FamilyCodePorting.Native Cs2CppRelease Notes2019CodePorting.Native Cs2Cpp 19.4Major FeaturesProduct name was changed from ‘csPorter for C++’ to ‘CodePorting.Native Cs2Cpp’. Old product name was used for releases from 18.9 to 19.3. The new one is being used from 19.4 release onwards.Support for CppSkipTest attribute was added allowing it to skip tests in gtest by placing attribute.Autoproperties initialization in constructor was fixed for the case when no setter is provided.Regex implementation was switched from boost::regex to PCRE2 library causing performance increase. Some previously unsupported syntaxes were supported.boost library used was upgraded to 1.69.Size of Skia library being used was optimized.Minor fixesInclude directive for enums used in class implementation was moved from .h files to .cpp files.Types conversion genration was fixed for ‘##’ and ‘!#’ operators when they are defined for translated class.Implicit type conversion operators were supported by porter.gtest version used was updated to actual master branch.‘CppSkipEntity’ and ‘Ignore’ attributes are now taken into account when adding baseclass’es tests into current class.NUnit.Framework.Assert.Warn() method translation was supported.C4715 warnings were suppressed for translation of try-finally statement with finally_statement_as_lambda option enabled.Collections comparison in tests translation was improved.Please consult respective sections of our wiki for more information.Full List of Issues Covering all Changes in this ReleaseKeySummaryCategoryWORDSCPP-758Add support for skipping tests with GTEST_SKIP()New FeatureCSPORTCPP-2626Fix project name in the packagesEnhancementCSPORTCPP-2584Change product name in license checkingEnhancementWORDSCPP-767force_include_enum#true shouldn’t include private enumsEnhancementPDFCPP-932Fix CsToCppPorter - types convertion in equality/inequality operatorsEnhancementPDFCPP-933CsToCppPorter - implicit conversion to base typeEnhancementPDFCPP-939Port Aspose.Font.Tests project: FormatterConverterEnhancementPDFCPP-940CsToCppPorter - fix AddBaseClassTestsEnhancementPDFCPP-937Port Aspose.Font.Tests projectEnhancementCSPORTCPP-2020Fix Regex issuesEnhancementEMAILCPP-188Prepearing Aspose.Email for C++ release 19.01EnhancementBARCODECPP-395Support Aspose.BarCode for C++EnhancementCSPORTCPP-2606Switch asposecpplib to compact Skia build with is_official_build flagEnhancementWORDSCPP-766Disable C4715 warnings for code with try-finally statementsEnhancementWORDSCPP-760Incorrect porting of autoproperties initialization in ctorBugWORDSCPP-764Implement AsposeAssert.AreCollectionsEqual assertionBugPublic API and Backward Incompatible ChangesStubs to GetFileName(), GetFileLineNumber() and GetFileColumnNumber() methods of System::Diagnostics::StackFrame class were added.Boolean-parameterized System::Diagnostics::StackTrace constructor was implemented.System::Reflection::MethodBase::get_ReflectedType() method was implemented.Implementation of Regex-related classes was changed. Some internally used methods may have been added and/or removed.Stubs for System::Runtime::Serialization::FormatterConverter class were added.