Support of Visual Studio 2019 Build System in CodePorting.Native Cs2Cpp 19.10

Share on FacebookTweet about this on TwitterShare on LinkedIn

We are continually evolving the CodePorting.Native Cs2Cpp application and excited to announce version 19.10. We continue to regularly add new features and enhancing porting capabilities of the application for better reproduction of .Net behavior.

We have introduced Visual Studio 2019 support in this release. Now while you are porting C# project to C++, you can specify the build system and configuration for Visual Studio 2019. As recently we have changed the release structure by providing packages for specific compilers to use multiple Aspose C++ projects in a single user application, so we have optimized the packages in the new version.

There are some other notable fixes in this release along with above shared enhancements. To get complete details of the changes, please check the release notes.

Improvement and Fixes

These are other notable new improvements and fixes introduced in this regular monthly release:

  • No defines are needed any longer to be set up in the project that uses CodePorting.Native Cs2Cpp
  • PCH files are dropped from non-VS packages
  • Windows DLLs are now all signed with the Aspose certificate
  • The memory leak is fixed when working with regular expressions
  • The release schedule is being adjusted

Public API and Backward Incompatible Changes

  • Previously, CMake scripts generated for ported code supplied some defines. These were also supplied from the Nuget package. Using these is not required any longer.

We Want to Hear from You

Feel free to drop us a comment sharing your thoughts about the new version. Or let us know if you have any suggestions or if you need any particular features which you expect our application to have.

And if you’ve not already had a chance to try CodePorting.Native Cs2Cpp, simply start a free trial today. All you need is to sign up with the codeporting.com and visit our developer resources for a quick start:

Posted in CodePorting.Native Product Family | Leave a comment

Improved Unit Testing with CodePorting.Native Cs2Cpp 19.7

Share on FacebookTweet about this on TwitterShare on LinkedIn

CodePorting.Native Cs2Cpp is a porter application that quickly ports C# project to C++ with high accuracy. We’re happy to announce CodePorting.Native Cs2Cpp 19.7 release. We’ve made some major enhancement and fixes in this release responding to the issue reported in previous releases and feedback of our customers, that improved the performance and stability of the application.

In this release, we have reworked the System::Globalization subsystem to better match to .Net implementation and introduced a number of new encodings are added into the System::Text submodule. Now it supports all the encodings supported in dotNET 4.6.1 except “x-Europa”. There are some other notable fixes in this release along with above shared enhancements, those improved the Unit Testing in CodePorting.Native Cs2Cpp for fast and consistent results. To get complete details of the changes, please check the release notes.

Improvement and Fixes

These are other notable new improvements and fixes introduced in this regular monthly release:

  • System::Globalization subsystem is reworked to better match to .Net implementation
  • Multiple previously unsupported encodings are added into System::Text submodule
  • ValueSource NUnit attribute is supported by porter
  • Initializer list for user IList-implementing classes is supported in porter
  • Test methods alignment issues are fixed in ported code
  • A regression is fixed which is introduced in 19.6 version which broke porting of initializer lists with braces inside them
  • ‘generatedlist_template’ porter option is supported by porter making it possible to enlist generated files
  • Most VS warnings of /W4 level are fixed or suppressed for both library and ported code
  • Imaging::PixelFormat::Format32bppPArgb value is supported by multiple drawing algorithms
  • Porting of IntPtr initializers is fixed
  • System::Compare() method is fixed for NaN values
  • Behavior of Fix System::Decimal::Round() is brought in line with .Net one
  • Decimal behavior for corner cases (e. g. porting direct initialization) is fixed
  • System::BitConverter::Int64BitsToDouble() method is supported
  • System::Threading::ThreadInterruptedException class is supported
  • Metadata is added for System::Drawing::Imaging::PixelFormat enum
  • Assert.Inconclusive NUnit method is supported by porter
  • Some headers unrelated to .Net classes are dropped from package

Public API and Backward Incompatible Changes

  • Classes inside System::Globalization namespace are reworked. Implementation-specific details not matching .Net public API may have been removed
  • include/zip headers are dropped as they are not required for ported code to work

Try it Out and Share your Feedback

Still haven’t tried CodePorting.Native Cs2Cpp? The free trial is right here waiting for you to give it a try. All you need is to sign up with the codeporting.com and visit our developer resources for a quick start:

Don’t forget to share your feedback, your feedback helps shape our roadmap because it is important to us to always deliver a product that satisfies your needs.

Posted in CodePorting.Native Product Family | Leave a comment

CodePorting.Native Cs2Cpp 19.6 Supports Injection of C++ Code in C# Source Code

Share on FacebookTweet about this on TwitterShare on LinkedIn

Hello! New version CodePorting.Native Cs2Cpp 19.6 is here. We are glad to introduce new release; it includes a new feature to inject C++ code in C# source code for porting along with many other important fixes. It makes CodePorting.Native Cs2Cpp more stable and reliable choice of developers to port their C# projects to C++.

Get CodePorting.Native Cs2Cpp 19.6 now

What’s New

C++ Code Injection

When you port your C# project to C++ code base, there are scenarios when you need to add some additional C++ code in ported code. If the code porting, is one-time task then you may add it manually into the ported code. However, if the code porting is recurring task, e.g. to release same versions of software for both languages, then you can automate the C++ code injection with CodePorting.Native Cs2Cpp porter as well. The new version introduces a new feature for the purpose. You can use any of the following options to add C++ code in your C# code. Please check documentation for more details.

  • Definition Replacement
  • Code Line Injection

Improvements and Fixes

These are other notable new improvements and fixes introduced in this regular monthly release:

  • Remaining warnings produced by library headers and ported code are fixed for clang and GCC compilers
  • Legacy ‘csPorter.Cpp.API’ and ‘CodePorting.Native.CsToCpp’ Nuget packages are dropped. No new versions of these will be planned
  • Floating point numbers rounding issues are fixed for some cases of values rendering
  • Missing ‘override’ keywords are placed around in library headers
  • CollectionAssert.AreEqual and CollectionAssert.AreNotEqual methods are suppported when porting NUnit tests
  • ‘gb2312’ codepage decoding is fixed
  • Issue is fixed with weak pointers’ assignment operator if the object being assigned to it has same address that the previous (deleted) one had
  • Translation of structure initialization with list of named expressions is fixed
  • FontFamily lookup is made case-insensitive, same as in .Net
  • Porter-generated comments are fixed when translating ‘using’ statement

Start a Free Trial Today

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

You can easily download the CodePorting.Native from C# to C++ Application for evaluation

Posted in CodePorting.Native Product Family | Leave a comment

Support of TestCaseData NUnit Class in CodePorting.Native Cs2Cpp 19.5

Share on FacebookTweet about this on TwitterShare on LinkedIn

Guys, CodePorting is glad to announce new version CodePorting.Native Cs2Cpp 19.5. For those new to CodePorting.Native Cs2Cpp, it is a leading code porting application in the market for C# to C++ conversion. You know unit testing is a very important aspect of software development. And you would be excited to know that CodePorting.Native Cs2Cpp supports porting of Unit Test from C# project to C++, using NUnit and XUnit frameworks for C++ language. We extend the unit tests porting feature by adding TestCaseData NUnit Class porting support in the latest release along with many other improvements. Please check what else is available in the new release.

TestCaseData NUnit Class

CodePorting.Native Cs2Cpp ports C# language-specific constructs to the best-matched C++ equivalents. For unit tests porting it uses NUnit and XUnit frameworks to C++ and run tests on ported code. Now, TestCaseData NUnit class porting is supported in the new version.

Let us demonstrate how NUnit TestCaseData class C# code migrates to native C++. You can port your C# project to the C++, either using command line option or GUI option.

C# Source Code

Ported Code

C++ Header

C++ Source Code

generate_enum_descriptions Porter Option

We have introduced a new porter option “generate_enum_descriptions” that enables passing System.ComponentModel.Description attribute value to the ported C++ code. It accepts Boolean value, default is False. The sample Configuration file looks like:

<porter>
    <opt name="option_name_1" value="option_value_1"/>
    <opt name="option_name_2" value="option_value_2" attribute1="attribute1_value"/>
    <opt name="option_name_3">Some text</opt>
   <opt name="generate_enum_descriptions" value="true"/>
    ...
</porter>

Improvements and Fixes

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

  • Bitwise operators are provided for some enums from the library.
  • Parsing of numeric enum values are supported by Enum::Parse() methods family.
  • Error is fixed when writing zero length string to XmlTextWriter.
  • Operator overload lookup is fixed in porter for some cases.
  • Conversion from user class to nullable wrapper is fixed in assignment operator.
  • XmlDocument::CreateAttribute is fixed for the case with XML namespace passed.
  • Remaining references to boost.regex are removed from the library.
  • Some code smell issues reported by static analyser are fixed.
  • Enum::GetName() is fixed for boxed flag enum values.
  • Some clang warnings are fixed in ported code and library headers.
  • Region::Intersect() method is fixed for the case of two similar regions.
  • OutOfMemory exception is fixed when using PathGradientBrush.
  • Assertion fault crash is fixed when drawing empty GraphicsPath with customized pen.
  • Some Skia internals are exposed for internal use only.
  • Porting of Assert.DoesNotThrow() is fixed.
  • Some cases of regex matching against empty string are fixed.

Start a Free Trial Today

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

You can easily download the CodePorting.Native from C# to C++ Application for evaluation

Posted in CodePorting.Native Product Family | Tagged , , , , | Leave a comment

Introducing CodePorting.Native Cs2Cpp

Share on FacebookTweet about this on TwitterShare on LinkedIn

Here’s the new version of CodePorting.Native Cs2Cpp 19.4. You would be wondering what is CodePorting.Native Cs2Cpp and what it does. Well, in this release, we have changed the name of csPorter for C++ to CodePorting.Native Cs2Cpp. We think codeporting word provides more clarity and recognizability to the functionality of our application than csPorter. As they say better late than never; so we have changed not only the name of our application but also the domain name. The Regex implementation and support to skip tests with GTEST_SKIP() are other important improvements in this release.

Don’t forget to check what else is available in the new release of CodePorting.Native Cs2Cpp.

How It Works?

Let us share some details of the application. It consists of three components; Porter, GUI and a pre compiled Library. The Porter is a command line application for porting C# code to the C++. The GUI is a graphical interface to the Porter, for porting code in a user-friendly environment. And the pre compiled .NET bridging library, is distributed with the ported C++ Project to follow, .NET-like design principles, regarding speed and memory usage in the C++.

CodePorting.Native Cs2Cpp translates C# language-specific constructs to the best-matched C++ equivalents. You can check more details C++ and C# Equivalents produced by this application.


Let us show you how C# Delegates are migrated into C++. They are declared using special type System::MulticastDelegate<T> from asposecpplib (.NET bridging library). You can port your C# project to the C++, either using command line option or GUI option.

C# Source Code

C++ Ported Code

If you are looking for more information about CodePorting.Native Cs2Cpp application, you may visit our online documentation.

It is important for us to hear what you think about our new release and improvements, so we can understand how we can do better in the future to meet and exceed your expectations. Please share your thoughts in our forum.

Start a Free Trial Today

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

You can easily download the CodePorting.Native Cs2Cpp 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 CodePorting.Native Cs2Cpp 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

Support of Networking in csPorter for C++ 19.1

Share on FacebookTweet about this on TwitterShare on LinkedIn
We are glad to announce csPorter for C++ 19.1 release. We have introduced the support of networking in this release along with some other important improvements and fixes. 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:
  • Networking functionality is added into System::Net namespace
  • aspose_cpp library is switched to explicit exports. Internal members are no longer exported
  • Aliasing constructor is supported by SmartPtr class
  • Equals method overloads ambiguity is fixed when methods with different parameter names are added
  • Assertion faults now break whole test instead of current function only which caused inconsistency between C# and C++ behavior
  • MinGW 7.1 compiler is no longer supported
  • CppConstexpr attribute is fixed to work properly on generic class members
  • Missing include fixed when generating code using System::MakeObject() function but not referencing System::Array type
  • Issue with events declared in interfaces is fixed. Previously, duplicated code is being generated
  • Issue translating implicit casts when assigning to properties is fixed
  • Issue translating static events is fixed
  • gtest supported version is upgraded to #9ab640c
  • BitArray to null comparison translation is fixed
  • Inheritance from IDictionary<TKey,TValue> interface is now translated properly
  • 4-argument version of String.Concat() is supported
  • String::EndsWith() behavior is fixed for zero length substrings lookup
  • Queue and Stack containers now support CppWeakPtr(0) attribute to keep contained pointers weak
  • StringBuilder class now works with null objects properly
  • CppSkipDefinition attribute now works properly with destructors
  • A error is fixed for partial class porting when another class is present in the same file
  • Environment::GetFolderPath() is implemented on Windows

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

Auto Port C# Codebase to C++ – csPorter Newsletter February 2019

Share on FacebookTweet about this on TwitterShare on LinkedIn
LinkedIn YouTube Twitter Facebook
Share this issue:

Monthly Newsletter

February 2019

C# to C++ – Source code to source code conversion
Easily port complex C# projects to C++ with minimum manual efforts
 
 

Convert C# based source code applications and projects into native C++ equivalent. Control the translation of exact language constructs using global rules or via attributes placed in the C# code. It also allows reproducing even internal classes and routines in the same way as they are implemented in original code.

 
Download Free Trial
Product News
Product News
Product News
 
Feedback
Feedback
Feedback
 
Posted in Newsletters | Leave a comment

csPorter for C++ 18.12 Maintenance Release

Share on FacebookTweet about this on TwitterShare on LinkedIn

We are pleased to announce csPorter for C++ 18.12 monthly release. Mainly, it is a maintenance release. In this release, we have fixed issues reported in previous versions 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:

  • original_tests_names option is added to disable prefixing tests names with categories names.
  • force_include_enum option is added to enabling adding ‘#include’ directives for enums instead of generating forward declarations in all cases.
  • Region::IsVisible(PointF) method is implemented.
    PointF point(22.5, 90.2);
    bool visible = myRegion.IsVisible(point);
    
  • Tests stub file (list of tests in ported project) is now sorted by test name.
  • The problem is fixed for ‘finally’ block operating on variables that have already been freed by ‘return’ statement (moving constructor optimization issue).
  • System::Convert::FromBase64String() now throws exception of correct FormatException type on input of unexpected format.
  • DateTime constructors now throw valid ArgumentOutOfRangeException exceptions on out-of-range dates or months being passed to them.
  • Callstack print of SmartPtr class destructor was ligtened by 1/3.
  • Messages of NotImplementedException, NotSupportedException and CultureNotFoundException are fixed to match .NET ones.
  • Order of constexpr fields in output files is fixed to avoid initialization fiasco.
  • A bug is fixed blocking some messages from reaching porter.log.
  • Messages for config errors now include file, line and position information.
  • A bug is fixed in porter generating ‘gtest not found’ errors if current directory was not ‘bin/porter’.
  • TEST_F macros in output files are now placed near the test methods they call to make debug easier

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

Automatically Port C# Source Code to C++ – csPorter Newsletter January 2019

Share on FacebookTweet about this on TwitterShare on LinkedIn
LinkedIn YouTube Twitter Facebook
Share this issue:

Monthly Newsletter

January 2019

Auto Convert C# Based Application Source Code & Projects to Native C++
Schedule porting tasks by writing CLI scripts or use GUI to manage workspaces with several inter-dependent projects.
 
Auto Convert C# Based Application Source Code & Projects to Native C++
 

csPorter for C++ allows effortlessly converting millions of lines of C# source code, applications and projects into native C++ equivalent. It is a source code to source code porter app, allowing the reproduction of internal classes and routines in the same way as they are implemented in the original C# code. Once you have converted your project to C++, you can build it for any of supported target platforms.

 
Download Free Trial
Product News
Product News
Product News
 
Feedback
Feedback
Feedback
 
Posted in Newsletters | Leave a comment

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

Share on FacebookTweet about this on TwitterShare on LinkedIn
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.

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