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.
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 unavailable VistaDB packages 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:
- 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.
- All backslashes in filepaths are replaced with Path.DirectorySeparatorChar
- CompactCE connection reads registry and fails on WSL
- Model checksum is built on modelcontent with a stringbuilder that uses \r\n on Windows and \n on Linux - causing checksum diff
- Issues with localhost cert force all tests to be done over HTTP
- Issues with sending parameters via WSL2-VS-Start; workaround: program checks for environmentvariable "mdrivenserverport" - if found, we use it over HTTP.
Issues on Turnkey:
- Path.DirectorySeparatorChar
- 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
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