Tom Deseyn

Red Hatter working on .NET Core.

Recent Posts

Tracing .NET Core applications

Tracing .NET Core applications

In this article, we’ll look at different ways of collecting and inspecting events from the .NET Core runtime and base class library (BCL).

EventListener

The EventListener class allows us to get events of the running application. Let’s learn how to use it with an example application. Our application performs an HTTP get and prints the length of the received response.

Continue reading “Tracing .NET Core applications”

Share
Interacting with native libraries in .NET Core 3.0

Interacting with native libraries in .NET Core 3.0

NativeLibrary is a new class in .NET Core 3.0 for interacting with native libraries. In this article, we’ll take a closer look.

DllImport

.NET makes it simple to call functions from a native library using DllImport:

[DllImport("mylibrary")]
public static extern int foo();

This code makes available the function foo from the native library mylibrary. This function accepts no arguments and returns an int. .NET takes care of marshaling the argument types. It is possible to use managed types (like strings), which will be automagically marshaled.

Continue reading “Interacting with native libraries in .NET Core 3.0”

Share
Improving ASP.NET Core build speed on Red Hat OpenShift

Improving ASP.NET Core build speed on Red Hat OpenShift

In previous articles, I’ve covered two strategies for improving .NET Core build speed on Red Hat OpenShift by reducing time to restore dependencies: adding a local NuGet server and using incremental builds. In this article, I’ll look at another strategy: using a custom base image that has includes the dependencies.

Continue reading “Improving ASP.NET Core build speed on Red Hat OpenShift”

Share
Reduce application image build times with .NET Core incremental builds

Reduce application image build times with .NET Core incremental builds

In a previous article, we talked about using containers to build .NET Core application images to make our builds portable and reproducible. Because each build starts from scratch, some time is spent downloading and extracting NuGet packages.

One way to reduce build times is to add a local NuGet server; this brings packages closer to the build machines, which reduces the time to download the packages. In this article, we’ll look at how the new incremental build feature of the .NET Core S2I builder can further reduce build times.

Continue reading “Reduce application image build times with .NET Core incremental builds”

Share
Using .NET PInvoke for Linux system functions

Using .NET PInvoke for Linux system functions

If you’ve developed Windows applications with .NET, you may have found yourself in a situation where the framework did not provide the APIs you needed. When that happens, you first need to identify the system APIs and then make them available using PInvoke. A website like pinvoke.net provides copy-and-pasteable code snippets for many Win32 API functions.

.NET Platform Invoke (PInvoke) makes it easy to consume native libraries. In this article, we’ll take a look at using PInvoke for Linux system functions.

Continue reading “Using .NET PInvoke for Linux system functions”

Share