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 .
.exe
) in der Bereitstellung nicht - vielleicht nur die Bibliotheken / DLL, aber was muss von einerexe
in der Bereitstellung ausgeführten Umgebung ausgeführt werden ?exe
) Sie könnten diese Pakete in Ihrem Projekt entfernen , aber wenn Sie das tun, müssen Sie Ihren Code debuggen - wenn Sie einige neue Funktionen verwenden oder solche mit Roslyn Abhängigkeiten, die Dinge brechen. Leider ist es "sicher", darauf zurückzugreifen.4.5.x
Dies ist mein persönlicher "Fix", wenn ein Projekt nicht für die Azure-Bereitstellung vorgesehen ist.Antworten:
Dies stammt aus dem MSDN-Forum.
https://social.msdn.microsoft.com/Forums/vstudio/en-US/442b100a-2b88-4ac4-b655-0c1345791f15/roslyn-cscexe-web-api-2-on-hosting-server?forum=msbuild
Ich wollte nur, dass jeder, der sich diese Frage ansieht, weiß, wie sich die Deinstallation auswirkt und warum sie überhaupt vorhanden ist
quelle
vb/cs/html
Ansichtsdateien, sodass dies möglicherweise nicht für alle praktikabel ist (Sie müssen die gesamte Site neu kompilieren, um "einfache" Front-End-Änderungen vorzunehmen, die Ansichten berühren). Außerdem habe ich zuletzt "veröffentlicht" ", auch wenn" full compile "eingeschaltet ist, werden dieexe
Dateien immer noch in/bin/roslyn
.....Dieses Problem trat in der Visual Studio 2017 Community Edition ständig auf, wo das Projekt nicht neu erstellt werden konnte, da die älteren Dateien in bin / roslyn nicht gelöscht werden konnten. Basierend auf dem Gold-Kommentar des OP lasse ich jetzt den Task-Manager geöffnet (Strg + Umschalt + Esc) und beende den VBCS.exe-Prozess. Die fehlerhaften Dateien in bin / roslyn können jetzt gelöscht werden.
quelle
Ein weiteres Merkmal ist, dass Build-Server keine Compiler-Abhängigkeiten aufweisen müssen. Sie senden den Compiler, den Sie mit dem Code verwenden möchten, an den Build-Server und er verwendet genau das, was Sie ihm gesagt haben.
quelle
exe
Inbin/roslyn
wird im Rahmen des "Publizierens" einer Asp.Net-App ( bereits kompiliert / erstellt) erstellt.Diese Version von Visual Studio enthält eine neue Version des C # & VB.net-Compiler-Codes mit dem Namen "Roslyn".
Roslyn ist eine vollständige Neufassung der C # - und VB.net-Compiler, wobei jeder in seiner jeweiligen Sprache geschrieben ist. Beispielsweise ist der C # -Compiler in C # und nicht in C ++ geschrieben. Roslyn ist Open Source (Roslyn auf GitHub), sodass Sie theoretisch sogar Ihre eigene Version von C # oder VB.net erstellen können!
Was Roslyn werden sollte, wurde bereits 2008 von Anders Hejlsberg auf der PDC-Konferenz erwähnt. Erst 2011 wurde die erste Vorschau veröffentlicht.
Unter den folgenden Links finden Sie detailliertere Informationen zu Ihrem Problem.
https://gooroo.io/GoorooTHINK/Article/16253/Visual-Studio-2015-and-Roslyn-Compiler/17944#.VmkfwjaheM8
https://visualstudiomagazine.com/articles/2012/03/20/10-questions-10-answers-on-roslyn.aspx
Von: https://forums.asp.net/t/2079727.aspx?What+is+the+roslyn+folder+
quelle
exe
) in einem Webanwendungskontext benötigt wird, selbst wenn die Webanwendung vollständig kompiliert wurde - mit anderen Worten, es gibt " Zur Laufzeit bleibt nichts "zum Kompilieren übrig (alles ist bereits vorkompiliert ) - wobei das Verwerfen / Ausschließen des gesamten Roslyn-Ordners nur" in Ordnung "ist.Zwei Dinge, die zu beachten sind: 1) Durch Entfernen wird das Problem "behoben", aber es wird "behoben", indem auf einen integrierten, alten Legacy-Compiler zurückgegriffen wird, der nicht mit späteren Sprachfunktionen kompatibel ist.
2) Eine Vorkompilierung ist in vielen Fällen nicht möglich. Wie würden Sie Informationen in einem Modell anzeigen, wenn es vorkompiliert ist, und dann Änderungen an diesen Daten anzeigen? Alle Daten, auf die Sie sich in Teilansichten zum Aktualisieren verlassen, werden niemals aktualisiert.
Ein weiterer interessanter Punkt ist, sicherzustellen, dass Sie das "Build" -Verzeichnis im Paket von Roslyn verfolgen. Wenn Sie dies nicht tun, wird kein Fehler ausgegeben, aber Ihre Site wird nicht kompiliert, wenn Sie versuchen, sie zu laden. Vollständig verfolgt, funktioniert es einfach. Wir haben es auf anderen Entwicklungssystemen bereitgestellt, ohne es zuerst auf diesen Systemen zu installieren. Dies ist möglich, da es sich um ein NuGet-Paket handelt.
quelle