Je suis nouveau dans ce domaine et je ne sais pas par où commencer.
Je veux compiler un projet Visual Studio C # avec Mono sur Linux (par ligne de commande).
Le fichier main.cs comprend ces références:
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;
Je n'ai aucune idée si je dois noter les références au compilateur, ou s'il les tirera en lui-même, s'il saura où les chercher ou non. Je n'ai jamais fait cela auparavant. Mais j'ai juste besoin de compiler ce projet.
Merci!
Avez-vous essayé xbuild ? C'est l'équivalent MSBuild sur le monde Mono. Si MSBuild est capable de compiler votre projet sous Windows, xbuild devrait pouvoir faire de même sous Linux (si ce n'est pas le cas, déposez un bogue dans Bugzilla ).
[~ # ~] mise à jour [~ # ~] : De nos jours, les développeurs/packagers Mono sont en train de regrouper l'original (et récemment ouvert) - MSBuild , qui est maintenant multiplateforme. Par exemple, il est déjà disponible dans les derniers programmes d'installation Mono pour Mac, vous pouvez donc utiliser le programme en ligne de commande msbuild
pour créer votre projet/solutions (remarque: il reste encore beaucoup à faire pour être intégré par les distributions Linux car msbuild dépend des paquets nuget, alias des objets blob binaires).
knocte a raison, installez mono-complet
apt-get install mono-complete
Je ne sais pas pourquoi mais j'ai eu des erreurs en ne respectant que mono-xbuild installé,
et exécutez à partir de la ligne de commande:
xbuild yourvisualcsharpproject.csproj
Vous pouvez construire dans Visual Studio et déployer sur Linux et exécuter sous Mono. Jetez un œil à cela article
Par exemple, Mono fournit des fonctions multiplateformes mais n'implémente pas certaines fonctionnalités liées à Windows fournies par .NET Framework. Vous ne pouvez donc pas compiler avec .NET sur Windows et vous attendre à ce qu'il fonctionne correctement sur Unix/Mono: cela peut fonctionner mais il y a de fortes chances qu'il échoue. En fait, plus le programme est complexe, plus la chance est grande (vous avez utilisé quelque chose qui n'est pas disponible en Mono).
Compilation avec l'outil de ligne de commande: Xbuild
Si vous voulez compiler un .sln/.csproj à partir de la ligne de commande contre mono, alors xbuild (clone mono de MSBuild) est le chemin à parcourir:
xbuild mysolution.sln
xbuild myproject.csproj
La page de manuel de xbuild sur Ubunt .
xbuild.exe est situé dans une installation mono, très probablement dans:
C:\Program Files (x86)\Mono\lib\mono\4.5
Compiler à partir de IDE (VS)
Vous pouvez compiler avec Mono sur Windows, à partir de Visual studio avec le complément MonoHelper (en utilisant xbuild en dessous).
Il existe également une autre solution, qui cible un profil "Mono" .NET Framework de Visual Studio. Les étapes suivantes viennent de ici .
Note: J'ai essayé de changer l'emplacement du profil en 4.5 (mais cela ne fonctionne pas ne fonctionne pas; vs ne le trouve pas ou il le détecte comme non installé), utilisez donc toujours le répertoire v4.0 pour installer un profil basé sur la VM v4.0. Cette limitation et le fait que la chose "Profile" a été abandonnée me font penser que cela ne fonctionnera pas pour une version plus élevée de Tools.
La même astuce de profil est d'ailleurs utilisée pour Unity.
Créez deux clés de registre:
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
Créez un lien vers le répertoire Mono dans le répertoire des assemblys de références Microsoft (vous devrez peut-être exécuter ce qui suit avec les droits d'administrateur)
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
Modifier FrameworkList.xml
Collez ce qui suit dans 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>
Compiler avec MonoDevelop/Xamarin Studio
MonoDevelop s'exécute sur Unix et sur Windows, et vous pouvez facilement basculer de .Net compile/debug/run à Mono compile/debug/run dans l'IDE. Cependant, bien que MonoDevelop soit assez efficace pour un développeur saisonnier C #, il n'a pas encore atteint la puissance de Visual Studio couplé à Resharper.
Si vous souhaitez exécuter/compiler/déboguer C # sous Linux, vous pouvez maintenant utiliser
et si vous voulez quelque chose avec exactement la même api sur linux et windows, vous pouvez utiliser . Net Core
Sur la ligne de commande, pour compiler:
dotnet build <solution/project>
ou si vous n'avez qu'un seul projet dans le dossier
dotnet build
et alors
dotnet run