Linux and c sharp

Run C# code on linux terminal

Of course it can be done and the process is extremely simple.

Here I am explaining the steps for Ubuntu Linux.

In the gedit window that opens paste the following example code:

using System; class HelloWorld < static void Main() < Console.WriteLine("Hello World!"); >> 
sudo apt update sudo apt install mono-complete mcs -out:hello.exe hello.cs mono hello.exe 

NOTE: @adabru’s answer below makes my solution obsolete unless you are using an older mono platform.

C# scripts can be run from the bash command line just like Python and Perl scripts, but it takes a small bit of bash magic to make it work. As Corey mentioned above, you must first install Mono on your machine. Then, save the following code in an executable bash script on your Linux machine:

if [ ! -f "$1" ]; then dmcs_args=$1 shift else dmcs_args="" fi script=$1 shift input_cs="$(mktemp)" output_exe="$(mktemp)" tail -n +2 $script > $input_cs dmcs $dmcs_args $input_cs -out:$ && mono $output_exe $@ rm -f $input_cs $output_exe 

Assuming you saved the above script as /usr/bin/csexec, an example C# «script» follows:

#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll using System; using System.Drawing; using System.Windows.Forms; public class Program < public static void Main(string[] args) < Console.WriteLine("Hello Console"); Console.WriteLine("Arguments: " + string.Join(", ", args)); MessageBox.Show("Hello GUI"); >> 

Save the above code to a file such as «hello.cs», make it executable, change the first line to point to the previously saved bash script, and then execute it, you should see the following output along with a dialog saying «Hello GUI»:

bash-4.2$ ./hello.cs foo bar baz Hello Console Arguments: foo, bar, baz 

Note that the GUI requires that you be at run level 5. Here is a simpler C# script that runs at a pure text console:

#!/usr/bin/csexec using System; public class Program < public static void Main(string[] args) < Console.WriteLine("Hello Console"); Console.WriteLine("Arguments: " + string.Join(", ", args)); >> 

Notice that the command line arguments are passed to the C# script, but the shebang arguments (in the first C# script above «-r:System.Windows.Forms.dll -r:System.Drawing.dll») are passed to the C# compiler. Using the latter functionality, you can specify any compiler arguments you require on the first line of your C# script.

If you are interested in the details of how the bash script works, shebang (#!) lumps together all arguments passed to it on the first line of the C# script, followed by the script name, followed by command line arguments passed to the script itself. In the first C# example above, the following 5 arguments would be passed into the bash script (delineated by quotes):

"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz" 

The script determines that the first argument is not a filename and assumes it contains arguments for the C# compiler. It then strips off the first line of the C# script using ‘tail’ and saves the result to a temporary file (since the C# compiler does not read from stdin). Finally, the output of the compiler is saved to another temporary file and executed in mono with the original arguments passed to the script. The ‘shift’ operator is used to eliminate the compiler arguments and the script name, leaving behind only the script arguments.

Читайте также:  Ubuntu one client linux

Compilation errors will be dumped to the command line when the C# script is executed.

Источник

Linux and c sharp

.NET является кроссплатформенным фреймворком и подддерживается в том числе различными дистрибутивами на базе Linux. В данном случае рассмотрим создание первой программы на ОС Ubuntu.

Установка .NET

Для начала работы с C# и .NET на Linux сначала надо установить .NET SDK . Установка конкретной версии .NET зависит от конкретной версии Ubuntu. Например, на момент написания данной статьи только версия .NET 6 SDK включена в пакетный менеджер Ubuntu. И чтобы установить .NET 6, в терминале можно ввести команду

sudo apt-get update && sudo apt-get install -y dotnet6

После установки мы можем проверить версию .NET SDK с помощью команды:

Но текущей версией .NET SDK является версия 7. Но на данный момент отстуствует соответствующий канал на эту версию в пакетном менеджере. В будущем ситуация может изменить, но сейчас надо выполнить чуть больше команд. Поэтому сначала необходимо добавить репозиторий пакетов Microsoft с помощью последовательного выполнения следующих команд

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

Установка .NET 7 SDK на Ubuntu и Linux

Обратите внимание на циферки в первой команде — «22.04». В случае если используется другая версия Ubuntu, то вместо них указывается соответствующая версия. Соответственно для Ubuntu 22.10 команда для установки репозитория будет выглядеть так

wget https://packages.microsoft.com/config/ubuntu/22.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb

Затем для установки 7-й версии .NET SDK выполним команду

sudo apt-get update && sudo apt-get install -y dotnet-sdk-7.0

Для проверки установленных .NET SDK можно выполнить следующую команду

Первый проект

Создадим первый проект. Для этого будем использовать набор консольных утилит .NET CLI. И вначале создадим каталог, где будет располагаться наш проект. Например, в моем случае это каталог /home/eugene/metanit/dotnet/helloapp . Откроем терминал и перейдем к этому каталогу с помощью команды cd .

Затем перейдем к этой папке командой

cd /home/eugene/metanit/dotnet/helloapp

Затем для создания проекта в этом каталоге выполним следующую команду:

В данном случае мы указываем, что создаваемый проект будет представлять консольное приложение.

.NET CLI Создание проекта для C# на Linux

После выполнения этой команды в папке helloapp будет создан проект с минимальным набором стандартных файлов и папок.

.NET CLI Создание проекта для C# на Linux

В частности, мы можем найти в папке проекта файл helloapp.csproj . Это главный файл проекта, который определяет его конфигурацию. Мы можем открыть его в любом текстовом редакторе, просмотреть и при необходимости изменить.

Читайте также:  Linux interface config file

И, кроме того, по умолчанию создается главный файл программы Program.cs со следующим содержимым:

// See https://aka.ms/new-console-template for more information Console.WriteLine("Hello, World!");

Соответственно, если нам надо внести изменения в исходный код программы, то мы будем изменять содержимое именно этого файла.

В принципе этот минимальный проект уже можно запускать. Для запуска проекта введем в командной строке следующую команду:

Компиляция программы на C# в терминале Linux

Теперь изменим весь код программы. Для этого откроем файл Program.cs в каком-нибудь текстовом редакторе и изменим его код на следующий:

Console.Write("Введите свое имя: "); var name = Console.ReadLine(); // вводим имя Console.WriteLine($"Привет "); // выводим имя на консоль

Изменение кода программы на C# и .NET

По сравнению с автоматически сгенерированным кодом я внес несколько изменений. Теперь первой строкой выводится приглашение к вводу.

Console.Write("Введите свое имя: ");

Метод Console.Write() выводит на консоль некоторую строка. В данном случае это строка «Введите свое имя: «.

На второй строке определяется строковая переменная name, в которую пользователь вводит информацию с консоли:

var name = Console.ReadLine();

Ключевое слово var указывает на определение переменной. В данном случае переменная называется name . И ей присваивается результат метода Console.ReadLine() , который позволяет считать с консоли введенную строку. То есть мы введем в консоли строку (точнее имя), и эта строка окажется в переменой name .

Затем введенное имя выводится на консоль:

Чтобы ввести значение переменной name внутрь выводимой на консоль строки, применяются фигурные скобки <>. То есть при выводе строки на консоль выражение будет заменяться на значение переменной name — введенное имя.

Однако чтобы можно было вводить таким образом значения переменных внутрь строки, перед строкой указывается знак доллара $.

Теперь протестируем проект, запустив его на выполнение с помощью команды

Источник

Developing C# on Linux [closed]

Closed. This question is seeking recommendations for books, tools, software libraries, and more. It does not meet Stack Overflow guidelines. It is not currently accepting answers.

We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.

I’d like to know if there are effective and open source tools to develop C# applications on Linux (Ubuntu). In particular, I have to develop Windows Forms applications. I know about the Mono project, but I’ve never used it. What are the best tools (IDE, compiler, etc.) to set up a .NET developing environment on Ubuntu? Is software developed on Linux runnable on Windows? Are there different behaviors or incompatibilities?

7 Answers 7

MonoDevelop, the IDE associated with Mono Project should be enough for C# development on Linux. Now I don’t know any good profilers and other tools for C# development on Linux. But then again mind you, that C# is a language more native to windows. You are better developing C# apps for windows than for linux.

Читайте также:  Linux and arp таблица

EDIT: When you download MonoDevelop from the Ubuntu Software Center, it will contain pretty much everything you need to get started right away (Compiler, Runtime Environment, IDE). If you would like more information, see the following links:

Software developed on windows or linux is runnable on top of .Net framework. So as long as it is possible to install .Net framework in OS it can run the application. You got to aware of the version though 😉

Backward compatibility is always there as far as I know. Problems may occur if you try to run an application on top of .Net 2.0 which is developed with .Net 3.5 or any later versions.

Though you should note, that .Net is always capable of more on Windows. Mono is more of a compatibility project, than an actual software development kit implementation. That’s how I see it at least.

Now Microsoft is migrating to open-source — see CoreFX (GitHub).

This is an old question but it has a high view count, so I think some new information should be added: In the mean time a lot has changed, and you can now also use Microsoft’s own .NET Core on linux. It’s also available in ARM builds, 32 and 64 bit.

Mono Develop is what you want, if you have used visual studio you should find it simple enough to get started.

If I recall correctly you should be able to install with sudo apt-get install monodevelop

The installation command is correct however you need to make sure that you have added the monodevelop repository to your system before you do this. Here is a currently working link: monodevelop.com/download And here is the way to add the repository: «` sudo apt install apt-transport-https dirmngr sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo «deb download.mono-project.com/repo/ubuntu vs-bionic main» | sudo tee /etc/apt/sources.list.d/mono-official-vs.list sudo apt update «`

I would suggest using MonoDevelop.

It is pretty much explicitly designed for use with Mono, and all set up to develop in C#.

The simplest way to install it on Ubuntu would be to install the monodevelop package in Ubuntu. (link on Mono on ubuntu.com) (However, if you want to install a more recent version, I am not sure which PPA would be appropriate)

However, I would not recommend developing with the WinForms toolkit — I do not expect it to have the same behavior in Windows and Mono (the implementations are pretty different). For an overview of the UI toolkits that work with Mono, you can go to the information page on Mono-project.

Источник

Оцените статью
Adblock
detector