Как скомпилировать проект Visual Studio С# с Mono

Я новичок в этом и не знаю с чего начать.

Я хочу скомпилировать проект Visual Studio С# с Mono в Linux (по командной строке).

Файл main.cs содержит следующие ссылки:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
using iTextSharp.text;
using iTextSharp.text.pdf;

Я понятия не имею, нужно ли мне указывать ссылки на компилятор, или он сам потянет их, независимо от того, будет ли он знать, где их искать или нет. Я никогда не делал это раньше. Но мне просто нужно скомпилировать этот проект.

Спасибо!

Ответ 1

knocte прав, установите моно-полный

apt-get install mono-complete

Я не знаю, почему, но у меня были ошибки, связанные с установкой только mono-xbuild,

и запустите из командной строки:

xbuild yourvisualcsharpproject.csproj

Ответ 2

Вы пробовали xbuild? Это эквивалент MSBuild в мире Mono. Если MSBuild может скомпилировать ваш проект в Windows, xbuild должен иметь возможность делать то же самое на Linux (если это не так, укажите ошибку в Bugzilla).

ОБНОВЛЕНИЕ. В настоящее время разработчики/упаковщики Mono находятся в процессе объединения исходного (и недавно открытого) MSBuild, который теперь является кроссплатформенным. Например, он уже доступен в последних установщиках Mono для Mac, поэтому вы можете использовать программу командной строки msbuild для создания вашего проекта/решений.

Ответ 3

Вы можете создать визуальную студию и развернуться в Linux и работать под моно. Посмотрите на эту статью

Ответ 4

Моно и .NET Framework не эквивалентны с точки зрения доступных функций.

Например, Mono предоставляет кросс-платформенные функции, но не реализует некоторые связанные с Windows функции, предоставляемые .NET Framework. Таким образом, вы не можете скомпилировать .NET на Windows и ожидать, что он будет работать плавно в Unix/Mono: Он может работать, но есть большая вероятность, что он потерпит неудачу. На самом деле, чем сложнее программа, тем выше вероятность (вы использовали что-то недоступное в Mono).

Компиляция с помощью инструмента командной строки: Xbuild

Если вы хотите скомпилировать .sln/.csproj из командной строки для mono, то xbuild (моно-клон MSBuild) - это способ:

xbuild mysolution.sln
xbuild myproject.csproj

Страница руководства xbuild на Ubuntu.

xbuild.exe находится в моноустановке, скорее всего в:

C:\Program Files (x86)\Mono\lib\mono\4.5

Компилировать из IDE (VS)

Вы можете скомпилировать Mono в Windows, из Visual Studio с добавлением MonoHelper (используя xbuild внизу).

Существует также другое решение, которое нацелено на профиль "Моно".NET Framework от визуальной студии. Следующие шаги взяты из здесь.

Примечание.. Я попытался изменить местоположение профиля в 4.5 (но это не работает, либо vs не находит его, либо обнаруживает, что он не установлен), поэтому всегда используйте каталог v4.0 для установки профиля на виртуальной машине v4.0. Это ограничение и тот факт, что вещь "Профиль" была прекращена, заставляет меня думать, что она не будет работать для более высокой версии инструментов.

Подобный трюк профиля используется для Unity, кстати.

  • Создайте два раздела реестра:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0,Profile=Mono

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0,Profile=Mono

  • Сделать ссылку на папку Mono внутри Microsoft References (вам может потребоваться запустить следующие права администратора)

    cd "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile" mklink /d Mono "C:\Program Files (x86)\Mono\lib\mono\4.5" cd Mono mkdir RedistList cd RedistList notepad FrameworkList.xml

  • Изменить FrameworkList.xml

Вставьте следующее внутри FrameworkList.xml

<?xml version="1.0" encoding="utf-8"?>
<FileList  Redist="Mono-4.5" Name="Mono 4.5 Profile" RuntimeVersion="4.5" ToolsVersion="4.0" > </FileList>
  1. Изменить цель рамки на вкладке приложения проекта в Visual Studio

Компиляция с помощью MonoDevelop/Xamarin Studio

MonoDevelop работает в Unix и Windows, и вы можете легко переключиться с .Net compile/debug/run на Mono compile/debug/запустить в среде IDE. Однако, хотя MonoDevelop достаточно эффективен для сезонного разработчика С#, он еще не достиг мощности Visual Studio в сочетании с Resharper.