Je publie un site Web ASP.NET Core MVC 3.0 et le dossier de sortie contient de nombreuses références dans de nombreuses langues aux Microsoft.CodeAnalysis
bibliothèques, quelqu'un sait pourquoi?
Bien sûr, le FxCopAnalyzers
package Nuget est installé sur le projet, mais il n'a pas été publié dans une version antérieure du projet, donc je ne comprends pas pourquoi il l'est maintenant car il ne devrait être utile qu'au moment du développement, pas dans un environnement de production.
asp.net-core
fxcop
microsoft.codeanalysis
Jonathan
la source
la source
Réponses:
J'ai rencontré le même problème lorsque j'ai utilisé la version 3.0. Mais je ne pense pas que cela soit dû au fait que .net core 3 compile des vues sur la publication car il y a aussi View ViewCompilation dans la
release/2.1
branche.Je pense que vous avez raison. Ces analyses doivent être utilisées uniquement lors du développement.
Mais lorsque je désinstalle le SDK (3.0) manuellement et que je réinstalle le dernier SDK , je ne peux plus reproduire. Je ne sais pas pourquoi cela se produit, peut-être qu'il a été corrigé maintenant. Cela est probablement dû à une autre raison: j'ai ajouté une référence supplémentaire sur d'autres packages qui dépend de Microsoft.CodeAnalysis par accident). Quoi qu'il en soit, veuillez d'abord mettre à niveau votre SDK vers la dernière version.
Une autre chose importante est que lorsque vous utilisez Visual Studio pour ajouter un contrôleur, il ajoutera
Microsoft.VisualStudio.Web.CodeGeneration.Design
automatiquement une référence . Notez que ce package dépendMicrosoft.CodeAnalysis.Common
indirectement du package. VoiciMicrosoft.CodeAnalysis.Common
un package partagé utilisé par la plate-forme du compilateur Microsoft .NET ("Roslyn"). Si vous téléchargez ce package et décompressez cette lib manuellement, vous constaterez qu'il y aMicrosoft.CodeAnalysis.dll
:Ce package n'est nécessaire que pour Dev-Time. Si vous ne supprimez pas cette dépendance, vous obtiendrez un grand nombre de DLL liées à
Microsoft.CodeAnalysis
votre dossier de publication.Supprimez les packages qui en dépendent
Microsoft.CodeAnalysis
, et vous ne devriez obtenir aucuneMicrosoft.CodeAnalysis
DLL associée:la source
dotnet aspnet-codegenerator controlller ...
Pour moi, cette ligne dans le
*.csproj
fichier a résolu le problème d'une manière ou d'une autre. Il déploie toujours leMicrosoft.CodeAnalysis
, mais uniquement pouren
:Voir le commentaire (par Jonathon Marolf) sur le problème Github.
la source
Voici mon point de vue pour essayer de rendre la solution plus facile à voir.
Le problème, plus que probable, est l'utilisation de
AddRazorRuntimeCompilation()
. Plus précisément, dans le startup.cs, vous ajouterez probablement une compilation d'exécution de rasoir comme ceci:et pour soutenir cela, votre projet web a probablement une référence à
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Ce paquet nuget a une dépendance
Microsoft.CodeAnalysis
qui produit toute cette sortie indésirable dans le dossier de publication.Le correctif consiste à modifier le fichier de projet et à conditionner la dépendance au mode débogage comme suit:
puis dans le fichier startup.cs appeler conditionnellement
AddRazorRuntimeCompilation()
comme ceci:Cela entraînera la disparition de toutes ces
Microsoft.CodeAnalysis
bibliothèques lors de la compilation en mode débogage. Alors maintenant, lorsque vous publiez en utilisant le mode Release, ils ne feront pas partie de la sortie.la source
Peut-être que cela peut aider quelqu'un, dans mon cas, le problème était "Microsoft.VisualStudio.Web.CodeGeneration.Desig", je devais changer la référence du package dans le fichier ".csproj" pour inclure ExcludeAssets = "all":
la source