Improved Code Porting of XML and Strings in csPorter for C++ 18.10

We are pleased to announce new monthly release of csPorter for C++ 18.10. This is a maintenance release that contains number of improvements and bug fixes. Some important fixes are XML and Strings related issues that further improves the overall stability and usability of csPorter for C++. Please check the release notes in order to get an idea about what is new and what has been enhanced or fixed with this revision of csPorter for C++.

Improvements and Fixes

These are the new features included in this regular monthly release:

  • Null reference error fixed when accessing namespace of XmlAttribute without any namespace set
  • Fixed runtime error when setting InnerText for XmlNode with no parent XmlDocument
  • Added missing overloads of XslCompiledTransform::Tranform() methods
  • Behavior of XmlTextWriter class now matches such of .Net class regarding spaces and EOL symbols
  • Fixed runtime error when assigning A object only referenced by B object to SmartPtr holding last reference to B
  • Several potential memory leaks related to WeakPtr usage are fixed
  • Support of several System::ComponentModel classes was added. Related API is fixed
  • Issue with XmlTextReader::ReadString() invalidating reader if element is empty is fixed
  • Incorrect work of Convert::ToString() function with DateTime type is fixed
  • Translation of concatenation between string and enum types is fixed
  • Detection of String vs bool overload is switched to fully automatic mode. CppForceStringParam attribute is still available e. g. for String vs TypeInfo cases
  • Translation of surrogate pairs inside string literals is fixed
  • Errors detected during Xml files parsing no longer go into stderr by default. To change this behavior, use ASPOSE_LIBXML2_ERROR_OUTPUT_CHANNEL system variable with possible values of ‘stderr’, ‘stdout’, ‘debug’, ‘null’ or ‘file:<filename>’
  • Platform checks are improved in Nuget package
  • Fixed porter not taking config into account when translating System.Char references
  • 64-bit integer to string conversions behavior was synchronized with .NET when it comes to trailing and leading spaces. Also, performance is improved
  • Shorter, more convenient directory name is provided inside release package

Public API Changes

We have made following breaking API changes in csPorter for C++ 18.10 version:

  • Several previously unsupported overloads of System::Xml::Xsl::XslCompiledTransform::Transform() method are added
  • Support of the following classes is added:
    • System::ComponentModel::AsyncCompletedEventArgs
    • System::ComponentClass::BackgroundWorker
    • System::ComponentWorker::ProgressChangedEventArgs
    • System::ComponentModel::RunWorkerCompletedEventArgs
    • System::Reflection::TargetInvocationException
  • Support of System::Threading::WaitHandle::WaitOne(const System::TimeSpan &timeout) method is added
  • char16_t_array type renamed to system_char_array. const_char16_t_array type renamed to const_system_char_array
  • System::Char::IsAsciiWhiteSpace() method is added

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation– Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog– Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials– Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++.

You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure.

If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?
Posted in CodePorting.Native Product Family | Tagged , , , , | Leave a comment

First Public Release of csPorter for C++

Since the reveal of an innovative software development product demands its existence in various popular programming languages/platforms, the code porting has become really a great challenge. As we already shared that we were working over a code porting solution to convert C# codebase to C++, we are pleased to launch its first version, csPorter for C++ 18.9. It is a solution for fully automated code conversion between C# and C++. It will enable developers to port their C# projects/applications to C++ codebase with full control and it will save their time and efforts used for manual porting process. The csPorter for C++ consists of three components; Porter, GUI and Library. The Porter is a command line application used to port C# code to C++. The csPorter for C++ GUI is an application provides graphical interface to the Porter for porting C++ Projects in user-friendly environment. And the CsPorter for C++ provides a special support library which comes in pre-compiled form for all supported platforms and exposes equivalents for .NET native types that can be used by both ported code and user code that works with it. API Preservation, Type System Reproduction, Memory Management, Ported Code Overriding are some of the salient features of the csPorter for C++. Please check documentation for complete list of the features. The following sections describe some of the features of the csPorter for C++.

Source Code to Source Code

The csPorter for C++ application needs source code of C# project for porting rather than compiled assembly. This allows reproducing even internal classes and routines in the same way in ported C++ code as they are implemented in original C# code. It is impossible to use the csPorter for C++ on IL code produced by C# compiler. Once you have converted your project to C++, you can build it for any of supported target platforms.

External Dependencies

C# code can have dependencies from the libraries you don’t have source for, or there can be legal situation preventing one from porting the code. In such cases, there is a way to substitute manually written code as a replacement for dependency code which is not available for porting. There are special rules for how to implement your API in such a way so it can be used with ported code. Except for API, there are no requirements on how to implement such parts of the code, so you can use third party library available on your target platform.

Unit Tests

The csPorter for C++ application support to port C# unit tests written using the NUnit and XUnit frameworks to C++ and run tests on ported code. Ported tests can then be run on ported code. So, if original code is covered with unit tests, ported code is also covered.

Documentation

You can get detailed information about the csPorter for C++ by visiting the documentation. It is a complete guide about the application which helps you understand the application and convert your C# projects to C++ codebase with ease.

Got Questions?

We’re open to feedback! Visit the csPorter for C++ forum and tell us what we can do to make the csPorter for C++ application fit your needs better. You can share your findings, difference of results, new feature requests and inquiries with us via this forum. This will help us improve the overall Product quality and usability in terms of usage.

Resources

  • Product Home Page– Gives you detailed overview about the csPorter for C++
  • Online documentation – Complete help documentation.
  • Download– Download latest release of the csPorter for C++
  • API Reference Guide– Details of the namespaces and classes of the API linked with the ported C++ Code
  • GitHub Examples– Provides ready to port Example Projects
  • Support Forum– Write to us if you have any query or inquiry about the csPorter for C++
  • Blog – Do not limit yourself, enable Blog subscription and keep yourself updated with the latest news on the csPorter for C++
  • Video Tutorials – Watch csPorter for C++ video tutorials

Start a Free Trial Today

Start a free trial today – all you need is to sign up with the csPorter. Once you have signed up, you are ready to try the csPorter for C++ and port your C# projects to C++. You can easily download the csPorter for C++ Application for evaluation. The evaluation download is the same as the purchased download.  The evaluation version (without a license specified) provides full product functionality, but it limits the input C# project structure. If you want to test the csPorter for C++ Application without the evaluation version limitations, you can also request a 30-days Temporary License. Please refer to How to get a Temporary License?
Posted in CodePorting.Native Product Family | Tagged , , , , | Leave a comment

Launching csPorter for C++ – A Tool for Auto Porting of C# Projects to C++

Code porting has become very popular and high demanding among the Software development community to present their solution for multiple platforms. The csPorter team is going to reveal a smart code porting tool, csPorter for C++. It is an application which automatically ports C# projects to C++ with high accuracy. It saves hundreds of development hours and money that helps to release the same version of the software for different platforms. It converts C# codebase to C++ in such a way that it can be used by C++ developers in the same way as if it was originally developed in this language. This product has already been extensively used to port many .NET Products to C++ codebase. The csPorter for C++ provides complete documentation, working examples and free support so that developers can learn it quickly and use with ease.

csPorter for C++

The main goal of the csPorter for C++ is to port an existing enterprise level C# project to C++ libraries automatically. The input for the csPorter for C++ is a C# project and a configuration file that contains options governing different aspects of the conversion process. Its output is a set of .cpp and .h files and a set of Cmake configuration files which can be used to generate project files and makefiles and build the sources for one of the supported platforms/compilers. It is designed to keep the memory footprint as small as reasonably possible. For this purpose a .NET to C++ API bridging library is distributed with the ported C++ Project. The ported C++ code relies on the bridging library that provides .NET-like APIs for C++ and follows the same design principles regarding speed and memory usage. Following are some key features of the csPorter for C++:
  • Source code to source code
  • API preservation
  • Type system reproduction
  • Memory management model
  • Porting control
  • Support library
  • Typemap
  • Ported code overriding
  • Satisfying External Dependencies
  • UnitTests Porting

How It Works?

The csPorter for C++ provides two different options to port C# code into equivalent C++ code. You just need to download latest release of the csPorter for C++ and use any option of your choice. 

Initial Release Availability

We are currently working on finalizing the csPorter for C++ release process and intend to share this publicly soon. So, stay tuned for further news about this upcoming porting application. You can reach us on csPorter forum for your queries related to the product and we will be more than happy to assist you in this regard.
Posted in CodePorting.Native Product Family | Leave a comment