Как скомпилировать проект 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.
Создайте два ключа реестра:
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>
- Измените целевой объект на вкладке приложения проекта в 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