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:
- libicu
- libicu71
- libicu72
- libicu-devel
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:
- openssl-devel
- openssl-libs
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.