Beaucoup de gens ici sont probablement familier avec l'un de Joel Spolsky plus populaires de messages de blog, Plaît, Monsieur, puis-je Avoir un éditeur de liens, où il pousse des cris de manière à éliminer les dépendances de la .NET framework est donc une application autonome peut être développé et vendu.
Jason Zander de Visual Studio de développement de l'équipe, à l'époque, a répondu avec son point de vue sur le sujet, arguant que le sujet est quelque peu discutable - la capacité à résoudre des problèmes de sécurité dans le moteur d'exécution (entre autres) était leur principale préoccupation. Dans l'ensemble, la faible surcharge en valait la peine.
Avance rapide jusqu'en 2009. Il y a quelques groupes là-bas maintenant, affirmant C# linkers. (Jason Zander a même dit lui-même qu'il ne serait pas beaucoup à la mise en œuvre.) Au lieu de la mignonne, la douzaine-de sorte que meg télécharger de .NET 1.0, nous avons maintenant un énorme 200-300 mo de croix-plate-forme complète .NET 3.5 programme d'installation qui contient les versions de .NET pour les architectures x86, x64 et ia64. Microsoft suggestions pour diminuer le runtime taille comprennent:
- Décompresser le package redistribuable, supprimer les plateformes cibles que vous ne voulez pas, et de le remettre ensemble
- Utiliser le web programme d'amorçage qui ne télécharge que les bibliothèques pour votre plate-forme
- Utiliser le Profil des Clients du programme d'installation (nouveau à partir de la fin 2008), ce qui a limité les bibliothèques et ne fonctionne que pour x86
Pour aggraver les choses, ce que je comprends (corrigez-moi si je me trompe) le profil du client et ne même pas s'inscrire avec windows comme ayant .NET 3.5 est installé. Cela signifie que si plusieurs .NET 3.5 client les applications sont installées sur l'ordinateur, aucun ne voir les uns les autres et l'exécution sera ré-installé, encore et encore!
Je ne sais vraiment pas ce que Microsoft est pensée ici. Même en supposant le pire des cas, installer sera pour une plate-forme cible (par exemple, x64) et que les bibliothèques doivent être incluses, vous êtes toujours à la recherche de plus de 60 mo au-dessus sur votre application. Même l'un des plus bien connu .NET applications, Paint.NET, est marqué par les Difficultés de l'installation de l'application en raison de l'énorme .NET dépendances. S'ILS ont des problèmes de la distribution d'une application gratuite, ce qui sur le reste du monde? En fin de compte, ils ont dû Faire un programme d'amorçage installé Microsoft Installer 3.1, l' .NET runtime programme d'amorçage, et de tous les autres dépendants libraires avant qu'ils puissent installer leurs propres applications.
Alors, comment à ce sujet. Un éditeur de liens. Faire une bonne existent - ou d'un outil qui, tout simplement, il est possible de construire une application en C#, sans que l'utilisateur d'installer le massif .NET runtime?
Mise à jour: alors, on dirait qu'il y a deux options:
Mono:
- Mono dispose de son propre éditeur de liens. À partir de la réponse ci-dessous, il semble que ça fonctionne assez bien.
.NET:
- Xenocode semble être celui qui est disponible et fonctionne.
- Thinstall est un autre qui a été recommandé, et c'est par VMware.
- Il y a un autre éditeur de liens par Remotesoft. Ils le projet de loi comme un "obfuscator'. Toutes les pensées?
- Trouvé un autre par Rustemsoft appelé Patineur .NET Obfuscator. Quiconque est familier avec eux?
- ILmerge par Microsoft a également été suggéré; il semble que ça n'effectue qu'une partie de la tâche (c'est à dire, la fusion des bibliothèques, de ne pas enlever les bits non utilisés).
Il ressemble à la Mono outils sont à se servir; comment .NET tools? Toute autre expérience avec eux, ou bien allons-nous attendre pour Microsoft de pousser de 3,5 à tout le monde? Je frémis à l'idée combien de temps ça va prendre pour .NET 4.0 pour être mis hors...