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.
Создание двух ключей реестра:
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.