Let's find out why we are giving so much importance to C# in 2018.
An important point is that C# is a “managed” language, meaning that it requires the .NET Common Language Runtime (CLR) to execute. Essentially, as an application that is written in C# executes, the CLR is managing memory, performing garbage collection, handling exceptions, and providing many more services that you, as a developer, don’t have to write code for. The C# compiler produces Intermediate Language (IL), rather than machine language, and the CLR understands IL. When the CLR sees the IL, it Just-In-Time (JIT) compiles it, method by method, into compiled machine code in memory and executes it. The CLR is part of the .NET, so if you see updates for the .NET Framework Runtime, it contains the CLR and .NET Framework Class Library (FCL).
The useful C# libraries -
Best libraries for image processing
C# libraries can be used to create versatile and highly useful for image processing. These are used to edit, change, distort, and process images. It’s so powerful for image processing. With these image processors, you can change and manipulate colors, image orientations, add a filter and blend effects, change image size, and much more. C# provides built-in image processors such as -
- ImageProcessor - It's collection of lightweight image processing libraries built using C#. ImageProcessor gives the user the ability to edit and manipulate images quickly and easily on both desktop and mobile applications. The project is open source and completely free to download, install, and use.
- CSharp Image Library - CSharp Image Library is an image processing library built entirely in C#. It supports jpg, png, bmp, TGA, and gif image formats. It’s speedy, lightweight, and has some interesting color-related and color-splitting features.
- Emgu CV - It's an open source library that uses the OpenCV library as a basis for its image processing features. It works by allowing OpenCV core functions and functionalities to be called by any .NET language (including C#). It’s written in C# and is highly portable - it’s supported on Windows, Mac, and Linux operating systems.
- RasterEdge - It's a powerful library written in C# for image manipulation, processing, and modifying. With it, you can isolate regions of an image to process, you can flip or rotate an image, mirror an image, edit and change colors, play with blending and sharpness effects, and much more. The library gives you a lot of options for ways in which you can process your images.
Physical Measure library
Physical Measure is a C# library for handling physical quantities by specifying value and unit. Scaling of units and conversions between multiple unit systems. It can be used to represent and handle physical measures and calculations of physical properties. PhysCalc is a calculator using Physical Measure to evaluate physical expressions.
It contains classes that represent the .NET Framework security system and permissions. Child namespaces provide types that control access to and audit securable objects, allow authentication, provide cryptographic services, control access to operations and resources based on policy, and support rights management of application-created content.
It contains types that support transactions with multiple, distributed participants, multiple phase notifications, and durable enlistments. A child namespace contains types that describe the configuration options used by the System.Transactions types.
Log4Net is a port of the well-known logging framework for Java log4J. It allows a much more granular approach to program debugging. With log4net it is possible to enable logging at runtime without modifying the original application binary and without incurring a high-performance cost. Multiple “levels” of logging can be set within your program as well, and so you can determine quickly where “fatal” errors occur, and where “warnings” occur that can be ignored in the safe running of your application.
System.Windows contains used in Windows Presentation Foundation (WPF) applications, including animation clients, user interface controls, data binding, and type conversion. System.Windows.Forms and its child namespaces are used for developing Windows Forms applications.
System.Xml namespaces contain for processing XML. Child namespaces support serialization of XML documents or streams, XSD schemas, XQuery 1.0 and XPath 2.0, and LINQ to XML, which is an in-memory XML programming interface that enables easy modification of XML documents.
The FileHelpers library was created to stop developers from continuing to parse CSV. If you are doing any kind of importing and exporting within your application using the CSV format to get data in or out, look no further. You can strong type your flat file simply by coding up a class that maps a data type to each record. This way data consistency, and import/export reliability can be tightened up on quite a bit. Writing out to a new file is also pretty easy once you’ve created your base classes defining the structure. Great little library for your toolkit.
It's a class library based on the PDFium project for viewing, text extracting, navigating and editing PDF files in your .NET projects. With the PDF Viewer control, you can display PDF files directly in your WinForms and WPF application without the need to install an external PDF viewer.
Elmah stands for error logging module and handlers. It is completely pluggable in the system for error handling within your .NET app. It catches bot thrown and unhandled exceptions across the scope of your app log them and allow you to browse the full stack trace, all without exposing the error to the users of your application. That’s useful for a number of reasons. Firstly you aren’t getting the performance hit of using debug=true within your application, means, you can still get to the bottom of little blips as and if they happen. Elmah works as an HTTP module, so it takes little or no effort to deploy on any project. Only have to configure a few bits, and it goes.
Enterprise DT FTP library
Enterprise DT is a great little FTP library, that performs all the needful without you getting your hands too dirty. It works with both web and offline applications, and again is a port of a Java library. It’s really easy to use and saves you from having to write your own FTP operations.
Wix# is a framework for building a complete MSI or WiX source code by using build script files written with the C# syntax. The package contains Wix# binaries, code sample, and custom MSBuild target (to be merged with VS project and trigger building MSI during the project compilation).
Microsoft AntiXSS library
This is one of the security packs that MS have released to help .NET developers write better, more secure code. Essentially it is an encoding library designed to help protect ASP.NET web-based applications from XSS attacks and works on the principles of inclusion (whitelisting) to accept valid characters.
With .NET Reflector, you can decompile, understand, and fix any .NET code, even if you don’t have the source. Third-party platforms aren’t always well-documented. Use .NET Reflector to look inside their assemblies, and see how they work and which APIs you can call.
It's a unit-testing framework for all .Net languages. Initially ported from JUnit. It has been completely rewritten with many new features and support for a wide range of .NET platforms.
CodeRush makes it easier to see what’s going on with complex code, so you can move forward and spend less time wandering and wondering. It compelling new debug visualizer effortlessly and instantly answers these questions and more.
It integrates seamlessly with Visual Studio. The code rules are written using LINQ queries that are nested in an NDepend project file in the solution. This allows a shared code environment to share the rule queries.
.Net End-To-End Encryption
.Net Library for End-To-End Encryption compatible with the eHealth End-To-End Encryption library. It allows sending sensitive messages over a non-protected carrier. It not only protects against unauthorized access but also identifies the sender.
The .Net Graph Library makes it easy for developers to create, traverse, analyze and solve problems related to graphs.
Algobox is a suite of libraries based on .Net platform targeted at the financial markets providing components and objects for handling market data, executions, and orders, customised collections and views for these objects.
Cutting Edge.Logging is a library that helps programmers to output log statements to a variety of output targets in .NET applications. The design is based on the .NET 2.0 Provider Model. This means the library uses the same configuration and extensibility model.
Microsoft ASAP (Aspiring Software Architects Program) Case Study Implementation using .NET 3.0 Technologies and proven Microsoft patterns and practices like Software Factories and Enterprise Library.
EasyAsync is a small C# coroutine library that takes the pain out of .NET asynchronous programming.
The Fluent.NET library introduces extension methods to make .NET code easier to read and more fluid to write.
The purpose of this project is to build a .NET library of tools that simplifies GeoCoding addresses, Polygon hit-testing and conversion of custom GeoSpatial data to popular formats (e.g. GeoRSS, ESRI Shapefile, KML, etc.) using standard interfaces.
NTemplates is a reporting library for .NET written 100% in C#. Define RTF templates, specify the placeholders, provide the information and you're done. NTemplates allows for changing the appearance of the report without recompiling your app.
Developed in C#, Plethora is a collection of opensource .NET libraries. Plethora is fundamentally designed for high-performance applications, and much of the library is dedicated to gaining performance advantages over the regular C# libraries.
The Free IMDB
The Free IMDB, is an open source C# library that enables .NET developers to quickly and easily retrieve information for both movies and actors. With The Free IMDB, you can search for a movie by its name or by its unique IMDB identification number. Free to use and modify.
The XbeeClient is a library for .Net Gadgeteer that makes it extremely easy to add Xbee wireless functionality to your Gadgeteer project. It includes Tests as a first class citizen, exciting sample projects.
The System.Workflow namespaces contain types used to develop applications that use Windows Workflow Foundation. These types provide design time and run-time support for rules and activities, to configure, control, host, and debug the workflow runtime engine.
This is not the end, there is a huge number of contains available in C#. We covered only a few of them, you will see more when developing your .NET applications. Even, you may find yourself often using libraries that are not covered in this article. Regardless of which libraries you use, gaining a familiarity with the functionality of the .NET Framework and how to use it in your applications is mainly important. Share your any experience with C# in comments. Thank you!