Pourquoi l' .NET framework prend tellement de temps à installer? Pourquoi est-il complexe pour le rendre portable?
Je pose cette question surtout pour apprendre. Disons que je veux envoyer une petite application console (50 lines of code Also I am using the System.Text.RegularExpresion namespace.)
à un ami écrit en c# sur .net framework 4.0 . J'aimerai faire l'application portable, donc je viens de lui envoyer la sortie de la bin.
Pourquoi il a installer des .net framework 4.0 client qui prend un certain temps. Aussi, il sera agréable à inclure uniquement les bibliothèques dll que j'ai l'intention d'utiliser dans ce cas system.dll (cette bibliothèque contient du système.texte.espace de noms regularexpressions).
En d'autres termes, pourquoi est-ce que je ne peux pas inclure system.dll dans mon application console afin de la rendre portable et pour qu'il fonctionne sur un ordinateur qui ne possède pas le .net framework est installé.
Pourquoi l'installation de .net framework 4.0-elle si complexe? Qu'arriverait-il si windows où à lieu tous les .bibliothèques net sur C:\Program Files\.net framework 4.0\
puis sur l'installation d'écrire une clé dans le registre de la voie où ce cadre a été installé ainsi que des programmes sont en mesure de trouver la nessesary dll.
Pourquoi les installations sont tellement complexes sur le général?
J'ai essayé de decomplile system.dll avec réflecteur puis de l'inclure sur mon projet et qui n'a pas travaillé
Modifier
Je suppose que ma question doit avoir été pourquoi .net framework 4.0 prend tellement de temps à installer? Pourquoi n'est-il pas possible d'exécuter le .net framework 4.0 si windows où placer les dll nécessaires sur les fichiers de programme, puis écrire dans le registre le chemin où ces dll sont situés. Ce processus aurait été beaucoup plus rapide. Pourquoi ne pas le faire de cette façon?
Donc, en conclusion
Merci pour l'aide je comprends maintenant quelle est l'importance de la CLR. Je suppose que la seule partie qui me manque pour comprendre, c'est pourquoi les installations de tenir si longtemps. Je comprends qu'il y a des milliers de dll. Unziping ces dll de fichiers de programme et de l'écriture 10000 touches sur le registre devrait être beaucoup plus rapide.
- Essayez d'écrire une application C++ qui peut être construite sur Windows et Unix et de voir si vous vous sentez toujours que .NET, la portabilité difficile 🙂
- Quelle est la partie de Cadre vous trouble? .NET 2.0 est livré avec Windows 7 et au-dessus.
- Je ne recommande pas cela, mais vous pouvez utiliser remotesoft.com/linker pour faire un natif de l'assemblée.
- La portabilité est probablement le meilleur réalisé par un installateur avec prerequistite vérification. WiX est votre ami. Pensez à utiliser .net profil du client, afin de réduire télécharger exigences, mais sachez que cela n'est plus disponible dans .net 4.5
- Comment pouvez-vous vous attendre sur les OS de préinstaller Cadre qui n'a pas encore été publié. Regex a été autour depuis la 1.0. Pourquoi êtes-vous le ciblage 4.0?
- J'ai pu également utiliser .net framework 2.0 et il faudra encore travailler. Je pose cette question pour en apprendre sur ce qui se passe lors de l'installation .net framework 4.0 pas parce que je veux utiliser des regex sur .net framework 4.0
- OK si vous souhaitez utiliser 4.0, puis vous devez l'installer. Ce sujet est source de confusion? Que penser d'une installation à prendre un certain temps est source de confusion? Avez-vous installé d'Office? Avez-vous d'installer SQL? J'ai eu des OS service pack installe prendre tant que .NET 4.0.
- c'est exactement ce que je demande. enfin, vous avez la question. pourquoi il faut tant de temps pour installer ces programmes. L'écriture de 10000 clés du registre et copyng 1 go de dll disque ne devrait pas prendre longtemps. Je veux savoir ce qui se passe.
Vous devez vous connecter pour publier un commentaire.
Votre question semble se résumer à "Pourquoi ai-je besoin pour installer l'ensemble .NET Framework, au lieu de juste le nécessaire DLL?"
La réponse est que .NET Framework est constitué de plus que juste la DLL. L'autre composante majeure du cadre est le CLR, qui est en charge de l'exécution et de la gestion .NET code. L' .NET Framework est constitué de beaucoup d'autres petites choses (comme les compilateurs) qui ne sont pas nécessaires pour exécuter du code, mais néanmoins inclus avec le cadre.
Le CLR est plus important .NET que le DLL eux-mêmes. Elle est analogue à la CPU sur un ordinateur. Sans elle, rien ne peut être fait, et les programmes exécutables que vous avez sont de simples déchets de données. Le CLR prend soin de JIT compiler votre code d'accès à un fichier exécutable natif, gestion de la mémoire, etc. Il est très semblable au concept de la JVM pour les applications Java.
Même de la DLL sont plus complexes qu'il n'y paraît. Bien que vous pourriez en théorie (en faisant abstraction du CLR pendant une minute) simplement déployer la dépendance de la DLL avec votre demande, n'oubliez pas que toutes ces DLL (à l'exception de mscorlib) avec dépendances sur plus de DLL, et ainsi de suite, y compris un grand nombre de dépendances pour une application simple.
Le langage de programmation C# nécessite l' .Net framework être installé sur l'ordinateur cible, avant d'exécuter le programme cible. VB.NET et F# ont la même exigence. L' .net framework est un ensemble très grand nombre de bibliothèques, ce qui exige plus que juste un couple de .Les fichiers DLL, mais aussi l'accès au système de registre. Il existe une assez profonde au niveau de l'intégration, de plus, grâce à la COM, mais d'aller en profondeur dans Win32 (au moins pour les WinForms).
Maintenant, Microsoft pourrait faire en C# compiler directement en code natif, mais ce n'est pas ce qu'ils ont décidé de le faire. Ces programmes exigent que le framework doit être installé, de par leur conception. Comme il est maintenant, l' .Net framework est nécessaire. C'était un plus gros marché en 2001, le C# et .Net a été d'abord introduit, parce que tout le monde avait à l'installer! Aujourd'hui, Windows 7 (et Vista) y sont pré-installés, rendant plus facile pour l'utilisateur. Pour le côté serveur (web apps), il n'est également pas que les grandes d'un accord, car il n'est pas question de l'installer sur plusieurs ordinateurs client
Une façon de voir les choses serait que chaque programme aurait besoin de toutes les bibliothèques, le rendant plus difficile à maintenir que des corrections de bug, si chaque programme a sa propre collection de .Net les bibliothèques utilisées. Avec une seule installation du framework sur un ordinateur, lorsqu'un bug est trouvé, Microsoft peut patch une version du framework, plutôt que de multiples endroits les fichier(s) pourrait être si chaque programme a son propre ensemble de fichiers de la bibliothèque.
Comme pour la portabilité, vous pouvez utiliser Mono pour exécuter ces mêmes .Net (C#) binaires sur Linux et Mac. Bien sûr, sur les autres plates-formes, vous aurez toujours besoin d'une installation de Mono pour le faire fonctionner.