Qu'est-ce / pourquoi est-ce que Roslyn est "nécessaire" dans /bin folder of Asp.Net

Il y a un tas de questions connexes sur ce, bien que la plupart des réponses définir Roslyn et/ou de fournir une "solution" à un problème ( exe , avec des fournisseurs d'hébergement, etc.)

ce que je ne peux pas trouver semble être le "pourquoi" et "pourquoi" (peut-être seulement dans le contexte de ASP.Net MVC / Web API) dans /bin/roslyn .

j'ai couru à des questions similaires (hébergement - .exe restrictions, prise en charge de 4.6 , etc.) et mon "fix" était de "il vous suffit de déployer Azur" (bien sûr, tout fonctionne sans accroc). Mais vraiment, cela ne répond pas:

  • pourquoi sont-ils nécessaires?
  • est-ce que cela signifie que les ils sont utilisés pour runtime compilation (mon cerveau pointe à cela, mais c'est une supposition complète/mon grok peut-être faux), comme ce SO post affiche - sauf correction, c'est " it " (plus bas).
  • il semble que "la suppression du paquet" est un "fix" (basé sur le passé de réponses) , mais si si, il (re)pose la question

je pense compréhension cela va aider - par exemple, je ne peux pas être le seul à avoir un sourcil levé de voir un .exe "nécessaire"....


mise à Jour

montre qu'il existe des" gemmes cachées":) j'ai lu et relu ...après tout, il est là depuis un certain temps maintenant - mais pas le fil de commentaires. Grosse erreur - il me fixait tout ce temps (ou du moins depuis cet échange):

Dmitry Dzygin 2 Jun 2015 12:53 AM

j'ai essayé la dernière version du paquet NuGet, mais il semble y avoir une différence dans la façon dont le compilateur est chargé/exécuté.

dans la v0.2.0.0 le compilateur Roslyn serait chargé en mémoire, ce qui améliorerait grandement les performances pour les sites Web non pré-compilés avec multiples *.*x/*.cshtml fichiers. La nouvelle version, cependant, dispose d'un nouveau fichier /bin/roslyn/csc.exe , qui est exécuté une fois par fichier, suppression complète de la fonctionnalité d'optimisation mentionnée ci-dessus.....

or:

XMao 2 Jun 2015 1 :22 PM

@Dmitry le travail du csc.exe dans /bin/Roslyn est d'invoquer le VBCSCompiler.exe , qui se trouve dans le même dossier. VBCSCompiler.exe est le processus qui effectue la compilation de travail. Si l' Vbcscompiler exécute déjà csc.exe de réutilisation et donc nous allons obtenir encore l'amélioration de performance mentionnée.

Hth...


mise à jour: 10/2017

semble que ce soit pertinent après tout ce temps donc une nouvelle mise à jour.

la réponse ci-dessous par @Donny V est une option . Par pleinement compiler votre application, y compris tous Views ( .cshtml / .vbhtml ), vous n'auriez pas besoin de ce exe dans votre application.

c'est vrai même si Visual Studio (à ce jour, VS 2017, de manière confuse) va encore créer le /bin/roslyn et son contenu dans le Publish processus, même si" compilation complète "est mis .

vous pouvez le tester par excluant le dossier /bin/roslyn et son contenu lorsque vous poussez votre application vers votre hébergeur.

mise en garde :

comme mentionné, la compilation complète de votre application signifie que vous devrez la recompiler, même pour les changements de niveau View .

51
demandé sur EdSF 2015-11-16 19:29:09

3 réponses

extrait du forum MSDN.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/442b100a-2b88-4ac4-b655-0c1345791f15/roslyn-cscexe-web-api-2-on-hosting-server?forum=msbuild

j'ai remarqué un inconvénient mineur à désinstaller ce paquet:

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

quelques-unes des nouvelles fonctionnalités de langue C# 6.0 si elles sont utilisées dans les vues (MVC projet) ne compile pas. Beaucoup de mes points de vue utilisent le ?. NULL vérification de l'opérateur pour accéder aux propriétés du Modèle. L'ensemble de ces points de vue maintenant, retournez les erreurs sur l'application My Godaddy hébergée MVC 5.

cette erreur se produit parce que les vues (par défaut) sont compilées à l'exécution. en utilisant le pipeline. net (non pré-compilé).

Pour résoudre ce problème, il suffit de décocher la touche " autoriser le site précompilé à possibilité de mise à jour" dans les paramètres de votre profil publish. Cela devrait pré-compilez vos vues et autorisez votre C# 6.0 (dernière version de Roslyn Compilateur) pour fonctionner comme un champion.

je voulais juste que quiconque regarde cette question sache la ramification de la désinstaller et pourquoi elle est là en premier lieu

24
répondu Donny V. 2016-09-21 14:34:54

était en cours d'exécution dans cette question tout le temps dans Visual Studio 2017 Community Edition où le projet n'a pas pu être reconstruit parce que les fichiers plus anciens dans bin/roslyn ne pouvaient pas être supprimés. En me basant sur le commentaire de Gold de L'OP, je garde maintenant le Gestionnaire des tâches ouvert (Ctrl+Shift+Esc) et je tue les VBCS.processus exe. Les fichiers offensants dans bin / roslyn peuvent maintenant être supprimés.

8
répondu Manish 2017-07-31 02:42:57

une autre caractéristique de celui-ci est qu'il n'a pas besoin de construire des serveurs pour avoir réellement des dépendances de compilateur. Vous envoyez le compilateur que vous voulez utiliser avec le code au serveur de construction et il utilise exactement ce que vous lui avez dit.

1
répondu Paul Swetz 2016-06-17 12:58:24