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

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

Я хочу скомпилировать проект Visual Studio C# с 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;

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

Спасибо!

5 ответов

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

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

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

apt-get install mono-complete

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

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

xbuild yourvisualcsharpproject.csproj

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

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

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

Если вы хотите скомпилировать.sln/.csproj из командной строки для моно, тогда 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 внизу).

Существует также другое решение, нацеленное на профиль Mono.NET Framework от Visual Studio. Следующие шаги приходят отсюда.

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

Кстати, тот же трюк с профилем используется для Unity.

  1. Создайте два ключа реестра:

    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

  2. Создайте ссылку на каталог 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

  3. редактировать 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/run в IDE. Однако, хотя MonoDevelop достаточно эффективен для сезонного разработчика на C#, он еще не достиг мощности Visual Studio в сочетании с Resharper.

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

Visual Studio Code и Mono / .NetCore

Если вы собираетесь запускать / компилировать / отлаживать C# в Linux, теперь вы можете использовать

и если вы хотите что-то с точно таким же API на Linux и Windows, вы можете использовать .Net Core

В командной строке для компиляции:

dotnet build <solution/project> 

или если у вас есть только один проект в папке

dotnet build

а потом

dotnet run
Другие вопросы по тегам