0

Je suis juste en train d'essayer de construire un exemple console app dotnet-core 2.0 qui devrait être publié comme un exécuter le fichier. Cela m'oblige à ajouter un RuntimeIdentifier dans le fichier csproj. Après avoir publié mon exemple d'application pour win-x64, j'obtiens un répertoire de sortie qui contient environ 200 dll et mon exécutable. J'ai le sentiment que c'est trop - seulement pour imprimer un simple Hello World à la console.dlls inutiles dans l'application de console de base dotnet?

Existe-t-il un moyen de réduire le nombre de DLL? Dans cet ancien document (et maintenant obsolète) nommé reducing package dependencies, une approche manuelle est proposée pour les bibliothèques.

Existe-t-il un moyen de réduire les dépendances dans dotnet-core 2.0? Ou n'est-ce pas un problème après tout et je ne devrais pas m'en préoccuper?

Juste pour être complet, voici ma définition par exemple du projet:

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
     <OutputType>Exe</OutputType> 
     <TargetFramework>netcoreapp2.0</TargetFramework> 
     <RuntimeIdentifiers>Portable;win-x64</RuntimeIdentifiers> 
    </PropertyGroup> 
</Project> 

Répondre

2

Toutes les dépendances sont utiles d'une certaine façon (certaines classes de chacun sont utilisés pour faire fonctionner l'application), alors quand vous dites " inutile "vous avez tort.

Jusqu'à présent, il n'y a pas de meilleur outil que la nouvelle annonce IL Linker pour réduire la taille du déploiement,

https://github.com/dotnet/announcements/issues/30

+0

Merci pour la pointe avec l'éditeur de liens. Cela semble fonctionner, mais il y a plus de dll dans le répertoire de sortie, que l'éditeur de liens ne regarde même pas. Je suppose que ce sont ceux qui sont requis par le .net core runtime et non liés à mon application. Je préférerais une version portable de toute façon, mais cela ne crée aucun fichier exécutable, l'application doit être appelée avec 'dotnet'. – ventiseis

+0

J'ai lu le numéro correspondant https://github.com/dotnet/cli/issues/6237 et constate que beaucoup plus de gens sont confus au sujet des options de déploiement. – ventiseis

+2

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish?tabs=netcore2x Il est clair que vous devriez utiliser '--self-contained'. La confusion n'est pas surprenante, mais elle devrait l'être de moins en moins, étant donné que la documentation est mise à jour assez fréquemment pour faire de nouvelles choses. –