web-dev-qa-db-fra.com

Bibliothèques .NET par défaut manquantes compilées - System.Object n'est pas défini ni importé

J'ai compilé mono sur OS X Mavericks en suivant le guide situé à l'emplacement suivant: http://www.mono-project.com/docs/compiling-mono/mac/

Maintenant, lorsque je compile mon application avec xbuild, j'obtiens les erreurs suivantes:

CSC: error CS0518: The predefined type `System.Object' is not defined or imported
CSC: error CS0518: The predefined type `System.ValueType' is not defined or imported
CSC: error CS0518: The predefined type `System.Attribute' is not defined or imported
CSC: error CS0518: The predefined type `System.Int32' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt32' is not defined or imported
CSC: error CS0518: The predefined type `System.Int64' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt64' is not defined or imported
CSC: error CS0518: The predefined type `System.Single' is not defined or imported
CSC: error CS0518: The predefined type `System.Double' is not defined or imported
CSC: error CS0518: The predefined type `System.Char' is not defined or imported
CSC: error CS0518: The predefined type `System.Int16' is not defined or imported
CSC: error CS0518: The predefined type `System.Decimal' is not defined or imported
CSC: error CS0518: The predefined type `System.Boolean' is not defined or imported
CSC: error CS0518: The predefined type `System.SByte' is not defined or imported
CSC: error CS0518: The predefined type `System.Byte' is not defined or imported
CSC: error CS0518: The predefined type `System.UInt16' is not defined or imported
CSC: error CS0518: The predefined type `System.String' is not defined or imported
CSC: error CS0518: The predefined type `System.Enum' is not defined or imported
CSC: error CS0518: The predefined type `System.Delegate' is not defined or imported
CSC: error CS0518: The predefined type `System.MulticastDelegate' is not defined or imported
CSC: error CS0518: The predefined type `System.Void' is not defined or imported
CSC: error CS0518: The predefined type `System.Array' is not defined or imported
CSC: error CS0518: The predefined type `System.Type' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerator' is not defined or imported
CSC: error CS0518: The predefined type `System.Collections.IEnumerable' is not defined or imported
CSC: error CS0518: The predefined type `System.IDisposable' is not defined or imported
CSC: error CS0518: The predefined type `System.IntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.UIntPtr' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeFieldHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.RuntimeTypeHandle' is not defined or imported
CSC: error CS0518: The predefined type `System.Exception' is not defined or imported

Lorsque j'ai utilisé le programme d'installation mono sous OS X, je n'ai jamais reçu aucune de ces erreurs.

(Je construis en mono parce que j'ajoute une fonctionnalité non complétée au framework .NET)

Résultat de l'exécution de autogen.sh: https://Gist.github.com/Geesu/149332f3f877c891d387 Résultat de l'exécution de make: https://Gist.github.com/Geesu/4296f7d4c6c68d6986d

41
Geesu

S'il y a un avertissement semblable à:

/lib/mono/4.5/Microsoft.Common.targets:  warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v2.0'. Framework Assembly references will be resolved from the GAC, which might not be the intended behavior.

Vous pouvez remplacer le .NET Framework sur la ligne de commande:

xbuild /p:TargetFrameworkVersion="v4.0"

Vous pouvez changer de solution:

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
14
Cat Zimmermann

J'ai rencontré ce problème lors de la construction de YouCompleteMe/OmniSharpServer sur Debian unstable (Sid). Ce qui se passe, c’est que la version installée de mono n’a pas d’assemblages Framework v4.5.2 installés, ce qui est la valeur par défaut du compilateur lors de la construction de cette solution/projet.

La solution de contournement consiste à spécifier la version de l'infrastructure ciblée comme disponible, ou à rendre disponible la version ciblée (lors de votre compilation personnalisée, par exemple).

La réponse de Cat Zimmermann est pertinente.

8
Nathan Schulte

Je suis tombé sur ce problème. J'ai oublié de vérifier les mises à jour après avoir réexécuté le programme d'installation de Mavericks. Des mises à jour de canaux stables étaient disponibles pour Mono et Xamarin.Android. Une fois que je les ai installés, tout est bien construit.

3
Sievajet

La différence avec l'installateur et la construction de la maison réside dans le fait que l'installateur "sait" où se trouvent les bibliothèques, alors que celles compilées ne le sont pas. Donc, sauf si vous pointez sur cet emplacement lors de la compilation de votre application, votre problème se produira (il n'y a fondamentalement aucune dll système trouvée). Je recommanderais de regarder dans la documentation de mcs , et de spécifier le chemin. (EDIT: avec le paramètre "-L" devrait le faire.).

1
Kmtdk

mon projet a commencé à compiler, quand j'ai enlevé des lignes

<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>

à partir de cela.

1
user1709408

Je résous ce problème en modifiant les paramètres du projet -> Général -> Cadre cible en Mono/.NET 4.5.

J'espère que ça marche pour toi.

0
sam

Essayez de supprimer les dossiers bin et obj dans tous les projets de cette solution. 

On dirait que ces dossiers avaient d'anciens fichiers générés par une ancienne version de Visual Studio, qui ne sont pas compatibles avec la nouvelle version de Visual Studio 

0
Jay Shah

Je ne sais pas comment soutenir cela logiquement, mais après avoir essayé de résoudre ce problème pendant quelques heures,

Unload .net standards project

parce que je ne recevais pas le problème exact et j'ai décidé de

reload it again

boom ... Cela a fonctionné ... je ne sais toujours pas quelle est la raison logique derrière tout cela. si quelqu'un le fait, veuillez commenter ci-dessous.

0
Akshay Kulkarni