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




microsoft license (4)

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.

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.


Ein weiteres Merkmal ist, dass Build-Server keine Compiler-Abhängigkeiten benötigen. Sie senden den Compiler, den Sie mit dem Code verwenden möchten, an den Build-Server, und dieser verwendet genau das, was Sie ihm gesagt haben.


Dies ist aus dem MSDN-Forum entnommen.
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 habe einen kleinen Nachteil bei der Deinstallation dieses Pakets festgestellt:

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform

Einige der neuen Sprachfeatures von C # 6.0, die in Ansichten (MVC-Projekt) verwendet werden, werden nicht kompiliert. Viele meiner Ansichten verwenden die?. NULL-Prüfoperator für den Zugriff auf Modelleigenschaften. Alle diese Ansichten geben nun Fehler in meiner von Godaddy gehosteten MVC 5-Anwendung zurück.

Dieser Fehler tritt auf, weil Ansichten (standardmäßig) zur Laufzeit mit der .NET-Pipeline kompiliert werden (nicht vorkompiliert).

Um dieses Problem zu beheben, deaktivieren Sie einfach die Option "Vorkompilierte Website kann aktualisierbar sein" in den Einstellungen Ihres Veröffentlichungsprofils. Dies sollte Ihre Ansichten vorkompilieren und ermöglichen, dass Ihre C # 6.0 (Neueste Version von Roslyn Compiler) wie ein Champion läuft.

Ich wollte nur, dass jeder, der sich diese Frage anschaut, die Verzweigung der Deinstallation kennt und warum sie dort überhaupt existiert


using Newtonsoft.Json.Linq;
string str = "Your String with Back Slashes";
str = JToken.Parse(str).ToString(); `// Now You will get the Normal String with "NO SLASHES"`






asp.net-web-api asp.net-mvc-5 roslyn