[asp.net-web-api] Was / warum ist Roslyn in / bin Ordner von Asp.Net "benötigt"


0 Answers

In Visual Studio 2017 Community Edition wurde dieses Problem ständig gemeldet. Das Projekt konnte nicht neu erstellt werden, da die älteren Dateien in bin / roslyn nicht gelöscht werden konnten. Basierend auf dem Gold-Kommentar des OPs, öffne ich jetzt den Task-Manager (Strg + Umschalt + Esc) und kill den VBCS.exe-Prozess. Die problematischen Dateien in bin / roslyn können jetzt gelöscht werden.

Question

Es gibt eine Reihe von verwandten Fragen zu diesem Thema, obwohl die meisten Antworten Roslyn definieren und / oder eine "Lösung" für ein Problem ( exe , mit Hosting-Providern usw.) bereitstellen.

Was ich nicht aufzuspüren vermag, ist das "Warum" und "Was für" (vielleicht nur im Kontext von ASP.Net MVC / Web API) in /bin/roslyn .

Ich stieß auf ähnliche Probleme (hosting - .exe Einschränkungen, Unterstützung für 4.6 , etc.) und mein "Fix" war "nur auf Azure bereitstellen" (natürlich funktioniert alles ohne Probleme). Aber wirklich, das antwortet nicht:

  • Warum werden sie benötigt?
  • bedeutet das, dass sie zur runtime verwendet runtime (mein Gehirn weist darauf hin, aber das ist eine komplette Vermutung / mein vielleicht falscher Grok), wie dieser SO Post zeigt - wenn nicht korrigiert, ist das "es" (mehr unten).
  • es scheint, "das Paket zu entfernen" ist ein "Fix" (basierend auf einigen früheren Antworten) , aber wenn ja, es (re) wirft die Frage auf

Ich denke , dass das Verständnis helfen wird - zB kann ich nicht der Einzige sein, der eine Augenbraue heben wird, wenn er eine .exe "gebraucht" sieht ....

Aktualisieren

Geht zu zeigen, dass "versteckte Edelsteine" existieren :) Ich habe das immer und immer wieder gelesen ... immerhin ist es schon seit einiger Zeit dort - aber nicht der Kommentarfaden. BIG Fehler - es starrte mich die ganze Zeit (oder zumindest seit diesem Austausch) an:

Dmitry Dzygin 2 Jun 2015 12:53

Ich habe die neueste Version des NuGet-Pakets ausprobiert, aber es scheint einen Unterschied in der Art zu geben, wie der Compiler geladen / ausgeführt wird.

In der Version 2.0.0.0 würde der Roslyn-Compiler in den Speicher geladen werden, was die Performance für nicht vorkompilierte Websites mit mehreren * .as * x / * .cshtml-Dateien erheblich verbessern würde. Die neue Version enthält jedoch eine neue Datei /bin/roslyn/csc.exe , die einmal pro Datei ausgeführt wird, wodurch die oben genannte Optimierungsfunktion vollständig entfernt wird.

Gold:

XMao 2 Jun 2015 1:22 PM

@Dmitry Der Job der csc.exe in /bin/Roslyn besteht darin, die VBCSCompiler.exe , die sich im selben Ordner befindet. VBCSCompiler.exe ist der Prozess, der die eigentliche Kompilierungsarbeit VBCSCompiler.exe . Wenn der VBCSCompiler bereits ausgeführt wird, wird csc.exe ihn wiederverwenden und somit werden wir immer noch die erwähnte Leistungsverbesserung erhalten.

Hth ...

Aktualisierung: 10/2017

Scheint dies nach all dieser Zeit relevant zu sein also ein weiteres Update.

Die Antwort von @Donny V ist eine Option . Wenn Sie Ihre Anwendung vollständig kompilieren, einschließlich aller Views ( .cshtml / .vbhtml ), benötigen Sie diese exe in Ihrer Anwendung nicht.

Dies ist auch dann der Fall, wenn Visual Studio (bis zum heutigen Tag, VS 2017, verwirrend) immer noch den /bin/roslyn -Inhalt im Publish Prozess erstellt, auch wenn "Komplette Kompilierung" eingestellt ist .

Sie können dies testen, indem Sie den /bin/roslyn Ordner und dessen Inhalt ausschließen, wenn Sie Ihre Anwendung an Ihren Hosting-Provider /bin/roslyn .

Vorbehalt :

Wie bereits erwähnt, müssen Sie Ihre Anwendung vollständig kompilieren, selbst wenn Sie Änderungen auf der Ansichtsebene vorgenommen haben.






Related