web-dev-qa-db-fra.com

Comment compiler un projet Visual Studio C # avec Mono

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!

46
Alasdair

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).

23
knocte

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
22
Olivier

Vous pouvez construire dans Visual Studio et déployer sur Linux et exécuter sous Mono. Jetez un œil à cela article

9
Mohamad Alhamoud

Mono et .NET Framework ne sont pas équivalents en termes de fonctionnalités disponibles.

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.

  1. 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

  2. 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

  3. 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>
  1. Modifiez la cible du framework dans l'onglet d'application du projet dans Visual Studio

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.

7
Fab

Code Visual Studio et Mono/.NetCore

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
1
Fab