The Necrotomicon

Running .NET 3.x Apps On Fairly Recent Versions of Fedora

Overview

These are my lessons learned when trying to run .NET 3.x apps in a Fedora 39 container.

Issue 1: Installation

You cannot install the .NET 3.X SDK using a package any more, so you need to install it manually. For me this just meant un-tarring the binary and placing the folder under /usr/lib64/dotnet.

Here's the official doc:

Issue 2: Finding libicu at Runtime

Overview

I then tried running a .NET 3.x DLL and immediately received this error:

Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.

To solve this I first installed the following packages:

However, this didn't seem to change anything.

Workaround 1 - Turning Off Globalization

After a little more research I found that I could work around this issue by simply setting an environment variable that basically turns off the built-in .NET multi-lingual features.

However, I like being able to support multiple languages.

Workaround 2 - Explicitly Defining the libicu Version

I dug a little deeper and found that when you explicitly define the libicu version that solves this problem. Here's where I found this recommendation:

So I set that environment variable and solved that problem.

Issue 3: Installing a Compatible OpenSSL Version

Finally, after all of this I go the following error when trying to use SSL with my application:

    No usable version of libssl was found

Again, this was surprising because I had already installed the following packages:

The official docs from Microsoft recommended installing the compat-openssl10 package, but that no longer seems to exist. Instead, I was able to get things working by installing the openssl1.1 package.


Recent posts