Enhanced Support of Threading and Unit Testing in csPorter for C++ 18.11

We are glad to publish a new monthly release of csPorter for C++ 18.11. It includes a number of enhancements and bug fixes. Improvement of Unit Test translation and threading are the important improvements in this release along with several other enhancements. 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 major enhancements included in this regular monthly release:
  • Tests translation approach is improved. Now, virtual function called from methods marked with TestFixtureSetUp, TestFixtureTearDown, SetUp and TearDown attributes are fully supported. Also, TestFixture objects are now created once before running tests from current fixture, and deleted afterwards. ‘cleanup_tests’ option is now ignored by porter
  • Named mutex implementation is added
  • Compilation of library code using Visual Studio 2015 is explicitly disabled
  • Possible static initialization fiasco is now detected by porter and reported as warning
  • PreserveWhitespace mode is enabled for XmlDocument class
  • New ‘obfuscate_cpp_headers’ option is supported. It allows generating headers with some type and name information removed for non-public fields
  • New ‘nunit_assert_class_aliases’ option is supported. It allows treating calls into methods of some ported classes same way calls into NUnit’s Assert class methods are treated
  • Graphics::FillRegion() method is implemented
  • Threading::Thread class’es behavior is improved to match .Net behavior better. Now the thread is detached after start, so dropping thread object reference doesn’t result in interthreading errors
  • Several System::Diagnostics::Process methods are implemented for Linux platform
  • A way to detect multiimage gifs is added
  • Simple string raw pointer operations are supported inside ‘fixed’ statement

Public API Changes

We have made following breaking API changes in csPorter for C++ 18.11 version:
  • The way tests were translated is changed. If you have tests in your solution, you must re-port full solution instead of individual project, as tests ported by previous porter versions won’t be compatible with tests ported by actual porter.
  • In System::Threading::Mutex class, Mutex(bool, String) constructor and Remove(String) static method are added.
  • System::Details::Skia namespace is moved to System::Drawing::Details::Skia. No clients’ code should be impacted.
  • IsMultiImage() method is added into Bitmap and Image classes.


  • 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?