Bonjour,
J'ai une application console qui faisait jusqu'à présent 250 Ko avec .NET Framework 4.8
La migration vers .NET Core étant à priori le sens de l'histoire, j'ai donc converti mon programme pour target .NET 5.0
Je mets à jour les NuGets, tout va bien. Je compile, ça marche. Je vais dans le dossier bin pour récupérer le programme et écraser l'existant chez mon client et... c'est le drame.
En effet, le programme lui-même fait toujours à peu près la même taille.
Sauf que j'ai en plus toutes les DLL de toutes les assemblies utilisées.
On arrive à plusieurs dizaines de fichiers et plusieurs dizaines de Mo.
J'installe .NET 5.0 sur le serveur du client.
Je copie donc que mon programme, j'exécute : évidement, ça ne marche pas.
Je copie tout le bordel généré par Visual Studio : youpi ça marche. Mais c'est une bouse intersidérale, je peux pas laisser ça en l'état...
Je cherche un peu, je trouve comment créer un programme "autonome".
https://docs.microsoft.com/en-us/dot...ng/single-file
Sauf que ça ne me va pas du tout !
1/ J'ai une DLL externe, que je livre normalement avec mon programme (et peut être mise à jour quand l'autre programme évolue) : elle est maintenant incorporée à mon programme
2/ Mon programme fait 65 Mo, rien que ça...
3/ Alors youpi, j'ai plus besoin d'installer le framework .NET 5.0 (quel intérêt ?) mais j'ai toujours besoin de déployer un certain nombre de DLL, notamment les CLR types de SQL Server, qui ne se sont pas intégrés, eux...
4/ Je suis maintenant obligé d'indiquer sur quelle plateforme je veux exécuter mon programme directement dans le projet si je veux pouvoir créer mon application standalone... c'est même pas un choix dans les options de publication ! Du coup je peux compiler pour Windows x64 uniquement, et si j'ai un autre client sous Linux il faut que je me paluche un projet séparé (c'est ultra intéressant d'avoir un framework cross-plateforme dans ce cas...)
Bref, je ne suis pas du tout satisfait par la chose...
Ma question est donc :
Existe-t-il un moyen pour incorporer dans le *.EXE les différentes assemblies absentes du framework (notamment les NuGets du projet) sans incorporer pour autant tout le framework ?
Et comment gérer ça proprement pour que ça reste cross-plateforme ? Je veux bien compiler pour chaque plateforme ou CPU, mais je veux pas avoir à gérer un projet différent pour chaque...
Merci d'avance pour vos conseils éclairés !
Partager