Как скомпилировать проект Visual Studio C # с Mono - PullRequest
46 голосов
/ 25 ноября 2011

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

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

23 голосов
/ 25 ноября 2011

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

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

22 голосов
/ 22 февраля 2012

Правильно knocte, установите mono-complete

apt-get install mono-complete

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

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

xbuild yourvisualcsharpproject.csproj
9 голосов
/ 25 ноября 2011

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

7 голосов
/ 12 февраля 2016

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

Например, Mono предоставляет кроссплатформенные функции, но не реализует некоторые связанные с окнами функции, предоставляемые .NET Framework. Так что вы не можете скомпилировать с .NET в Windows и ожидать, что он будет работать гладко в 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. Это ограничение и тот факт, что функция «Профиль» была прекращена, заставляет меня думать, что она не будет работать для более высоких версий Инструментов.

Кстати, этот же трюк с профилем используется для 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.

1 голос
/ 27 февраля 2018

Код Visual Studio и Mono / .NetCore

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

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

В командной строке, чтобы скомпилировать:

dotnet build <solution/project> 

или, если выиметь только один проект в папке

dotnet build

и затем

dotnet run
...