Ich veröffentliche eine ASP.NET Core MVC 3.0-Website und der Ausgabeordner enthält viele Verweise in vielen Sprachen auf Microsoft.CodeAnalysis
Bibliotheken. Weiß jemand warum?
Natürlich ist das FxCopAnalyzers
Nuget-Paket auf dem Projekt installiert, aber es wurde nicht in einer früheren Version des Projekts veröffentlicht, daher verstehe ich nicht, warum es jetzt ist, da es nur zur Entwicklungszeit nützlich sein sollte, nicht in einer Produktionsumgebung.
asp.net-core
fxcop
microsoft.codeanalysis
Jonathan
quelle
quelle
Antworten:
Ich habe das gleiche Problem festgestellt, als ich die Version 3.0 verwendet habe. Ich glaube jedoch nicht, dass dies durch das Kompilieren von Ansichten in .net Core 3 bei Veröffentlichung verursacht wird, da sich in der Verzweigung auch View ViewCompilation befindet
release/2.1
.Ich glaube du hast recht. Diese Analyse sollte nur zur Devtime verwendet werden.
Wenn ich das SDK (3.0) manuell deinstalliere und das neueste SDK erneut installiere , kann ich nicht mehr reproduzieren. Ich weiß nicht, warum es passiert, vielleicht wurde es jetzt behoben. Dies ist eher auf einen anderen Grund zurückzuführen: Ich habe einen zusätzlichen Verweis auf andere Pakete hinzugefügt, der versehentlich von Microsoft.CodeAnalysis abhängt . Aktualisieren Sie Ihr SDK zunächst auf die neueste Version.
Eine weitere wichtige Sache ist, dass bei Verwendung von Visual Studio zum Hinzufügen eines Controllers
Microsoft.VisualStudio.Web.CodeGeneration.Design
automatisch eine Referenz hinzugefügt wird . Beachten Sie, dass diesesMicrosoft.CodeAnalysis.Common
Paket indirekt von einem Paket abhängig ist . HierMicrosoft.CodeAnalysis.Common
ist das ein freigegebenes Paket, das von der Microsoft .NET Compiler Platform ("Roslyn") verwendet wird. Wenn Sie dieses Paket herunterladen und diese Bibliothek manuell entpacken, werden Sie Folgendes feststellenMicrosoft.CodeAnalysis.dll
:Dieses Paket wird nur zur Dev-Time benötigt. Wenn Sie diese Abhängigkeit nicht entfernen, werden
Microsoft.CodeAnalysis
in Ihrem Veröffentlichungsordner eine ganze Reihe von DLLs angezeigt .Entfernen Sie die Pakete, die davon abhängen
Microsoft.CodeAnalysis
, und dann sollten Sie keineMicrosoft.CodeAnalysis
verwandten DLLs erhalten:quelle
dotnet aspnet-codegenerator controlller ...
Für mich hat diese Zeile in der
*.csproj
Datei das Problem irgendwie gelöst. Es setzt immer noch dieMicrosoft.CodeAnalysis
, aber nur füren
:Siehe den Kommentar (von Jonathon Marolf) zum Thema Github.
quelle
Hier ist meine Einstellung zu dem Versuch, die Lösung besser sichtbar zu machen.
Das Problem ist höchstwahrscheinlich die Verwendung von
AddRazorRuntimeCompilation()
. Genauer gesagt, in der Datei startup.cs fügen Sie wahrscheinlich eine Razor-Laufzeitkompilierung wie folgt hinzu:und um dies zu unterstützen, hat Ihr Webprojekt wahrscheinlich einen Verweis auf
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
Dieses Nuget-Paket ist davon abhängig,
Microsoft.CodeAnalysis
dass all diese unerwünschten Ausgaben im Veröffentlichungsordner erzeugt werden.Das Update besteht darin, die Projektdatei zu bearbeiten und die Abhängigkeit wie folgt vom Debug-Modus abhängig zu machen:
und dann in der Datei startup.cs bedingt
AddRazorRuntimeCompilation()
wie folgt aufrufen :Dies führt dazu, dass alle diese
Microsoft.CodeAnalysis
Bibliotheken nur beim Kompilieren im Debug-Modus nicht verfügbar sind. Wenn Sie jetzt im Freigabemodus veröffentlichen, sind sie nicht Teil der Ausgabe.quelle
Vielleicht kann dies jemandem helfen. In meinem Fall war das Problem "Microsoft.VisualStudio.Web.CodeGeneration.Desig". Ich musste die Paketreferenz in der Datei ".csproj" ändern, um ExcludeAssets = "all" einzuschließen:
quelle