Skip to main content

Running dotnet on Linux

Server: Linux, version SUSE 12

To run dotnet code on Linux, the first and foremost task is to "Install Mono package on linux".

Note: Mono is an open implementation of Microsoft's .Net framework, including compilers. It uses the same development libraries on Linux which are being used on Windows. Therefore, if you code and compiled some mono code on Linux,  it will work for Windows as well.

      zypper is a package installation tool which is used in this scenario. If zypper is not available, check which package manager tool is installed on server. Furthermore, to verify if zypper is installed or not, type zypper on command line which will show all options if zypper is available on server else it will show 'command not found'.

zypper ar -r http://download.opensuse.org/repositories/Mono/SLE_11_SP2/Mono.repo

The above command will download from mentioned URL in a new repository. Here 'ar' stands for 'add repo'.

After adding it to repository, type 'zypper refresh' command, it will ask to install packages. Type the appropriate option and install the Mono packages.


Once successful installation,       we are all set to run dotnet on linux server.

Running first dotnet code

Create a new test.cs file by typing following command.

$cat>test.cs

Now open the file using any available editor. In this case it is 'vi' editor.

vi test.cs

Starting writing the first dotnet code as shown below.

      Information about 'vi' editor:
  • Type 'i' to change it to insert mode.
  • Type 'esc' to come out of insert mode.
  • Type ':w' to write the file and save.
  • Type ':q' to quit and come back to command line tool.

       NOTE: If any exception appears like '!' is required to override the file. Type ":w!" to override the existing file and write the new text. OR Type ":q!" to override the existing file with new text and quit.

C# code for 'test.cs':
using System;
namespace Test1
{
class Test1
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!!");
}
}
}

Once you have saved the file, its time to compile it. 'mcs' is command which is used for compiling the code.

dev-server-linux-suse12:~ # mcs test.cs

After compilation is successfully completed, its time to run the application. As it is console project, '.exe' file will be created as output. 'mono' is the command used for running the test project.

dev-server-linux-suse12:~ # mono test.exe
Hello World!!

You are all set to run dotnet on Linux. Provide your valuable comments/suggestions.

Comments

Popular posts from this blog

Cannot alter the login 'sa', because it does not exist or you do not have permission.

Working on projects, it can happen that 'sa' account gets locked. If it is on local machine OR development boxes, onus would be on you to fix it. If scripts and SQL steps are not working, this might help you fixing the issue. Steps to unlock 'sa' account and resetting the password. 1. Open SQL Server Configuration Manager 2. Select SQL Server Services -> 'SQL Server' service. 3. Right click on 'SQL Server' service and click on "Startup Parameters". For 2008, server "Startup Parameters" are inside Advanced tab.   4. Add '-m' in startup parameters as shown above and click on 'Add'. This will put SQL server into 'Single User Mode' and local admin will have 'Super User' rights. For 2008, server you have to add ':-m' in the last of the existing query. 5. Save the settings and Restart the service. 6. Now open the SQL Server Management Studio and connect to database using 'Windows A

Could not load file or assembly 'Microsoft.Web.Infrastructure'

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. What 'Micorosoft.Web.Infrastructure' does? This dll lets HTTP modules register at run time. Solution to above problem: Copy 'Micorosoft.Web.Infrastructure' dll in bin folder of your project and this problem should be resolved. If you have .Net framework installed on machine, this dll should be present on it. You can search for this dll and copy it in your active project folder.   Alternatively,  you can install this dll using nuget package manager PM> Install-Package Microsoft.Web.Infrastructure -Version 1.0.0 Happy coding!!

Dockerize a dotnet core application with SQL connectivity

Before reading this article, I am assuming that you know Docker, Dotnet core and have a dotnet core application which is trying to connect to SQL server. Read how to build aspnet core app, docker and run the docker container. If docker container is running and you are not able to connect to database, this blog should help you fix it.  Prerequisite -  Make sure code is working via running aspnet core locally via visual studio or command line. Port 1433 is opened for connecting to SQL server. Solution If you have Docker file ready, it should somewhat look like below file -  FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env WORKDIR /app # Copy csproj and restore as distinct layers COPY /SampleAPI/*.csproj ./ RUN dotnet restore # Copy everything else and build COPY . . WORKDIR /app/SampleAPI RUN dotnet publish -c Production -o publish # Build runtime image FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 WORKDIR /app/SampleAPI COPY --from=build-env /app/SampleAPI . WORK