Es gibt eine Reihe verwandter Fragen dazu, obwohl die meisten Antworten Roslyn definieren und / oder eine "Lösung" für ein Problem bieten ( exe
bei Hosting-Anbietern usw.).
Was ich anscheinend nicht finden kann, ist das "Warum" und "Wofür" (möglicherweise nur im Kontext der ASP.Net MVC / Web API) in /bin/roslyn
.
Ich bin auf ähnliche Probleme gestoßen (Hosting - .exe
Einschränkungen, Unterstützung für 4.6
usw.) und mein "Fix" bestand darin, "nur in Azure bereitzustellen" (natürlich funktioniert alles reibungslos). Aber das antwortet wirklich nicht:
warum werden sie gebraucht?- Bedeutet dies, dass sie für die
runtime
Kompilierung verwendet werden(mein Gehirn zeigt darauf, aber das ist eine vollständige Vermutung / mein vielleicht falscher Grok), wie dieser SO-Beitrag zeigt- sofern nicht korrigiert, ist dies "es" (weiter unten). - Es scheint, dass "Entfernen des Pakets" ein "Fix" ist (basierend auf einigen früheren Antworten) ,
aber wenn ja, wirft es die Frage (erneut) auf
Ich denke, das zu verstehen wird helfen - zB kann ich nicht der einzige sein, der eine hochgezogene Augenbraue hat und ein .exe
"gebrauchtes" sieht ...
Aktualisieren
Zeigt, dass es "versteckte Juwelen" gibt :) Ich habe das immer und immer wieder gelesen ... schließlich ist es schon seit einiger Zeit da - aber nicht der Kommentarthread - der ursprüngliche Link, auf den verwiesen wird, circa 2014, wurde von neu gestaltet Microsoft und die Kommentare werden nicht mehr angezeigt ... zum Glück sind die relevanten Teile unten.
GROSSER Fehler - es starrte mich die ganze Zeit an (oder zumindest seit diesem Austausch):
Dmitry Dzygin 2. Juni 2015 00:53
Ich habe die neueste Version des NuGet-Pakets ausprobiert, aber es scheint einen Unterschied in der Art und Weise zu geben, wie der Compiler geladen / ausgeführt wird.
In Version 0.2.0.0 wird der Roslyn-Compiler in den Speicher geladen, wodurch die Leistung für nicht vorkompilierte Websites mit mehreren * .as * x / *. Cshtml-Dateien erheblich verbessert wird. Die neue Version enthält jedoch eine neue
/bin/roslyn/csc.exe
Datei, die einmal pro Datei ausgeführt wird, wodurch die oben erwähnte Optimierungsfunktion vollständig entfernt wird.
Gold:
XMao 2. Juni 2015 13:22 Uhr
@Dmitry Die Aufgabe des
csc.exe
In/bin/Roslyn
besteht darin, das aufzurufenVBCSCompiler.exe
, das sich im selben Ordner befindet.VBCSCompiler.exe
ist der Prozess, der die eigentliche Kompilierungsarbeit erledigt. Wenn der VBCSCompiler bereits ausgeführt wird, wird csc.exe ihn wiederverwenden und somit die erwähnte Leistungsverbesserung erzielen.
Hth ...
Update: 10/2017
Scheint dies nach all dieser Zeit relevant zu sein, also ein weiteres Update.
Die Antwort unten von @Donny V ist eine Option . Wenn Sie Ihre Anwendung einschließlich aller Views
( .cshtml
/ .vbhtml
) vollständig kompilieren, benötigen Sie dies nicht exe
in Ihrer Anwendung.
Dies gilt auch , wenn Visual Studio (bis heute, VS 2017 zum Verwechseln) wird noch schafft die /bin/roslyn
und der Inhalt in dem Publish
Prozess, auch wenn „vollständige Compilierung“ gesetzt ist .
Sie können dies testen , indem ohne den /bin/roslyn
Ordner und seinen Inhalt , wenn die Anwendung auf Ihrem Hosting - Anbieter drängen.
Vorsichtsmaßnahme :
Wie bereits erwähnt, bedeutet das vollständige Kompilieren Ihrer Anwendung, dass Sie sie auch bei View
Änderungen der Ebene neu kompilieren müssen .