2013-05-16 3 views
3

Nous essayons d'exécuter un script Mono simple sur la ligne de commande sous OS X. La plupart des scripts fonctionnent bien pour nous, mais Dès que nous essayons d'utiliser System.Numerics, nous obtenons "l'erreur CS0234: Le type ou le nom d'espace de noms" Numerics "n'existe pas dans l'espace de noms System."Impossible de faire fonctionner System.Numerics avec la ligne de commande Mono (mcs) sur OS X

Ce n'est pas trop surprenant, et devrait être réparable avec une option de ligne de commande appropriée pour mcs, plus bien configurer PKG_CONFIG_PATH ... mais c'est là que nous sommes tombés. Tout d'abord, voici le script afin que vous puissiez suivre à la maison:

using System; 
using System.Numerics; 

public static class MainProgram { 
    public static void Main(string[] args) { 
     Console.WriteLine("Hello world!"); 
    } 
} 

Alors, la prochaine, nous avons essayé "mcs -r: System.Numerics Test.cs". Cela produit "l'erreur CS0006: Le fichier de métadonnées` System.Numerics 'n'a pas pu être trouvé ". "Man mcs" suggère que nous pouvons obtenir les autres paquets système en ajoutant "-pkg: dotnet" à la ligne de commande. Mais cela produit:

Le paquet dotnet n'a pas été trouvé dans le chemin de recherche pkg-config. Peut-être vous devez ajouter le répertoire contenant `dotnet.pc 'à la variable d'environnement PKG_CONFIG_PATH Aucun paquet' dotnet 'trouvé erreur CS8027: Erreur lors de l'exécution de pkg-config. Vérifiez la sortie ci-dessus.

OK alors, nous n'avions pas PKG_CONFIG_PATH, donc nous avons essayé de définir un:

export PKG_CONFIG_PATH=/Library/Frameworks/Mono.framework/Versions/Current/lib/pkgconfig/ 

Cela corrige le CS8027; mais nous avons toujours le CS0234 avec lequel nous avons commencé. Et si je combine le -pkg et le -r, par exemple. "mcs -pkg: dotnet -r: System.Numerics Test.cs", j'obtiens "erreur CS0006: Le fichier de métadonnées` System.Numerics 'est introuvable ".

Je suis perplexe à ce stade ... aucune idée de ce que l'incantation que je suis manquant pour faire fonctionner System.Numerics avec mcs?

Répondre

2

Si vous utilisez Mono 2.10.x, vous devrez compiler avec dmcs au lieu de mcs pour activer le profil 4.0 (System.Numerics est une fonctionnalité C# 4.0+ uniquement). Si vous utilisez Mono 2.11.x ou 3.0.x, alors mcs par défaut doit sélectionner le profil 4.5. mcs -help doit afficher 2, 4 et 4.5 comme valeurs possibles pour l'option -sdk. Si ce n'est pas le cas, le framework n'est pas correctement installé. Je l'ai eu une fois, où je pense que /Library/Frameworks/Mono.framework/Versions/Current pointait vers le mauvais répertoire; l'installation d'une deuxième fois fixé cela. La manipulation pkg-config devrait être inutile.

+0

Merci beaucoup! mcs --version montre que je cours 2.10.12.0. Il a une option -sdk, qui vaut par défaut 2, et supposément autorise 4, mais quand j'essaye -sdk: 4, je reçois une page d'erreurs. Mais dmcs fonctionne bien, et nous allons donc nous y tenir jusqu'à ce que nous mettions à jour vers Mono 2.11.x ou plus tard. Nous étions vraiment perplexes sur celui-ci - merci pour votre aide! –

Questions connexes