WSL Windows subsystem for Linux

To get started with Linux, you may use WSL. WSL is the Windows SubSystem for Linux that is built into Windows 10.

Make sure you have the feature on; Turn Windows features on or off -> Windows Subsystem for Linux

Once you have it on, you need a Linux install; we use Ubuntu (22.04 at the time of writing).

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microso ft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Then, install .net core (we use .net core 5.0):

sudo apt-get update; \  
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0

This is a good overview: https://weblog.west-wind.com/posts/2017/apr/13/running-net-core-apps-under-windows-subsystem-for-linux-bash-for-windows

Remember that your c disk is found here: /mnt/c/

WSL2

WSL2 offers better interaction between Visual Studio and WSL. Read more here: https://docs.microsoft.com/en-us/visualstudio/debugger/debug-dotnet-core-in-wsl-2?view=vs-2019

Had to install the “.Net Core Debugging with WSL 2” component in Visual Studio Installer (Visual Studio Edition->Modify->Individual Components->.Net Core Debugging with WSL 2

Build MDrivenServer

You need to register a Nuget package source to find the VistaDB packages not available on the Nuget site - this is only needed once:

sudo dotnet nuget add source /mnt/c/capableobjectswush/Xternal/VistaDB --name  XternatVistaDB    

Build the sln, navigate to the directory, then:

sudo dotnet build

To start the MDrivenServer project, navigate to the directory:

sudo dotnet run -port=5001 -nohttps -host=ip/domain
What issues have been identified on MDrivenServer:
  1. CompactCE is a Windows-only embedded database - we are looking to replace it with a license version of VistaDB. If file App_Data/UseVistaDBIfThisFileExists.xml exists, we will now use VistaDB instead of CompactCE.
  2. All backslashes in filepaths are replaced with Path.DirectorySeparatorChar
  3. CompactCE connection reads registry and fails on WSL
  4. Model checksum is built on modelcontent with a stringbuilder that uses \r\n on Windows and \n on Linux - causing checksum diff
  5. Issues with localhost cert force all tests to be done over HTTP
  6. Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdrivenserverport" - if found, we use it over HTTP.
Issues on Turnkey:
  1. Path.DirectorySeparatorChar
  2. Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdriventurnkeyport" - if found, we use it over HTTP.

Deploy on Linux

The deployment on Linux works much the same as described in the LocalServers description. The reason is that Linux and LocalServers both use the same .net core editions of MDrivenTurnkey and MDrivenServer.

Dlls are platform independent - but exe's are not: https://docs.microsoft.com/en-us/dotnet/core/deploying/ - this leads to a separate publish being needed to get the Linux distribution:

dotnet publish -r linux-x64 --self-contained false

You can download the Linux distributions from here: https://mdriven.net/PublicDownloads/MDrivenServerCoreLinux_<version>.zip.

The current version is found here: https://mdriven.net/PublicDownloads/MDrivenServerOnCoreVersion.xml

https://mdriven.net/PublicDownloads/MDrivenTurnkeyCoreLinux_<version>.zip.

The current version is found here: https://mdriven.net/PublicDownloads/MDrivenTurnkeyOnCoreVersion.xml

Download the server-zips as described above. In these 2 zips, you will find StreaminAppCoreWebApp.dll (TurnkeyServer as dll), and AppCompleteGenericCore.dll (MDrivenServer as dll).

Expand the zips to your desired locations on Linux - in two different directories.

Starting on Linux

To start the applications, install at least dotnet core 3.1 on your Linux machine.

Configure MDrivenServerOverride to set the address and port to MDriven Server.

Start the applications - MDrivenServer first - by navigating to the directory of the app and:

dotnet AppCompleteGenericCore.dll -port=5010 -nohttps

Then, navigate to the TurnkeyApp directory and:

dotnet StreaminAppCoreWebApp.dll -port=5011 -nohttps
2021-05-18 15h34 54.png

After starting, navigate to the MDrivenServer by using the chosen URL - log in with user "a" and password "123456".

The MDrivenServer does not yet have a model - upload a model with MDrivenDesigner. After this step, you can run the application in the MDrivenTurnkey.

Tips and Tricks

This is no Linux-expert-wiki - but I noticed that the WorkInfo page of MDrivenServer ran into problems while creating bitmaps. It turned out that there was some graphics lib missing on the server - the following fixed it:

sudo apt-get install libgdiplus 
cd /usr/lib 
sudo ln -s libgdiplus.so gdiplus.dll
This page was edited 24 days ago on 03/26/2024. What links here