Comment est-ce possible de ne pas inclure stdlib (mscorlib.dll) dans mon application C# lors de la compilation? Pour autant que je sache, toutes les classes héritent de la classe System.Object, qui est définie dans mscorlib.dll. Qui plus est, les types tels que int ne sont que des alias, par ex. pour System.Int32, qui sont également définis dans mscorlib. Cette option est-elle déjà utilisée?Compilateur C#:/nostdlib option
Répondre
Oui, il est utilisé par toute personne qui compile un programme qui ne fonctionne pas avec la version de bureau du CLR. Comme Silverlight, il cible .NETCore, ou le Micro Framework. Ils ont leur propre mscorlib.dll, bien sûr avec System.Object défini.
est ici la ligne de commande du compilateur d'un exemple de projet Silverlight:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702
/nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;SILVERLIGHT
/reference:"c:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll"
etc...
Selon les docs
http://msdn.microsoft.com/en-us/library/fa13yay7(VS.80).aspx
Vous utilisez si vous essayez de remplacer les classes de système.
De MSDN - "Utilisez cette option si vous souhaitez définir ou créer votre propre espace de noms et objets système.". Assez juste - je ne le ferai pas bientôt, tho. :)
Je vais) http://lightnet.codeplex.com/ –
Vous pouvez également l'utiliser si vous voulez construire à déployer contre une version plus ancienne cadre. Visual Studio (15, de toute façon) utilise cette option lors de la construction d'un projet que vous avez configuré pour cibler une ancienne version de la structure. Au lieu d'utiliser le mscore standard, il en utilise un de Reference Assemblies/Microsoft/Framework/vx.y
- 1. Pourquoi la bibliothèque d'exécution est-elle une option du compilateur plutôt qu'une option de l'éditeur de liens?
- 2. VS 2008 Option du compilateur pour signaler les variables non initialisées
- 3. Option de compilateur Visual C++ pour vider la hiérarchie de classes
- 4. Besoin d'une macro autoconf qui détecte si -m64 est une option de compilateur valide
- 5. existe-t-il une option compilateur/éditeur de liens GCC pour changer le nom de main?
- 6. gcc option pour obtenir statvfs64
- 7. Réglage compiler.theme option Halo/Flex 4 FlashDevelop
- 8. conception compilateur
- 9. Compilateur ActionScript
- 10. Visual Studio 2005: existe-t-il une option du compilateur pour initialiser toutes les variables de la pile à zéro?
- 11. Google compilateur de fermeture et teamcity/tfs
- 12. umdh.exe -g option
- 13. procédure stockée Option
- 14. option de suppression automatique
- 15. F # Option champ d'enregistrement
- 16. -T option in perl
- 17. Aucune option Gui?
- 18. Meilleure option d'authentification OpenLDAP?
- 19. option erronée sélectionnée
- 20. Structure en option sql
- 21. Option d'impression sur l'iPhone
- 22. option non valide: --autospec
- 23. Option clic droit TreeNode
- 24. Check HTML DropDown option
- 25. Option en italique
- 26. TaskCreationOptions.LongRunning option et ThreadPool
- 27. No Deploy option IIS
- 28. Sélection d'une option null
- 29. Modélisation "en option" clé
- 30. JQuery option XML noeud
Ce n'est toujours pas clair pour moi. L'utilisation de ma propre version de System.Object est-elle acceptable? Je ne pense pas que CLR le permettrait. System.Object et System.ValueType sont des classes spéciales qui indiquent également si ma variable est de type référence ou type de valeur. –
@MarcAndreson: Si je comprends bien, le commutateur du compilateur '/ nostdlib' ne donnera pas nécessairement un assembly que le CLR (.NET Framework) peut exécuter. Mais il produit un assembly valide qui pourrait bien être exécutable sur une plate-forme compatible CLI différente (telle que Mono, Silverlight ou la vôtre). Compte tenu de cette fonctionnalité, vous pouvez avoir un compilateur C# pour l'une de ces plates-formes. Si le compilateur C# de chaque plate-forme toujours, inconditionnellement lié votre code spécifiquement à son propre 'mscorlib.dll', vous auriez besoin d'un compilateur par plate-forme. Donc '/ nostdlib' (en théorie) rend le compilateur réutilisable sur toutes les plates-formes. – stakx