Quoi / pourquoi Roslyn est-il «nécessaire» dans le dossier / bin d’Asp.Net?

Il y a un tas de questions connexes à ce sujet, bien que la plupart des réponses définissent Roslyn et / ou fournissent un “correctif” à certains problèmes ( exe , avec les fournisseurs d’hébergement, etc.)

Ce que je n’arrive pas à trouver est le “pourquoi” et le “pour quoi” (peut-être uniquement dans le contexte des API ASP.Net MVC / Web) dans /bin/roslyn .

Je me suis heurté à des problèmes similaires (ressortingctions d’hébergement – .exe , prise en charge de 4.6 , etc.) et mon “correctif” consistait à “simplement déployer sur Azure” (bien sûr, tout fonctionne sans problème). Mais vraiment, cela ne répond pas:

  • pourquoi sont-ils nécessaires?
  • Cela signifie-t-il qu’ils sont utilisés pour la compilation à l’ runtime (mon cerveau pointe vers cela, mais c’est une supposition complète / mon peut-être mal), comme le montre cet article – à moins que corrigé, c’est “it” (plus ci-dessous).
  • il semble “supprimer le paquet” est un “correctif” (basé sur des réponses passées) , mais si oui, il (re) pose la question

Je pense que comprendre cela aidera – par exemple, je ne peux pas être le seul à avoir un sourcil levé en voyant un ” .exe ” nécessaire ….


Mettre à jour

Va pour montrer que “des gemmes cachées” existent 🙂 J’ai lu ceci encore et encore … après tout ça a été là pendant un certain temps maintenant – mais pas le fil des commentaires. Grosse erreur – il me fixait tout ce temps (ou du moins depuis cet échange):

Dmitry Dzygin 2 juin 2015 12:53

J’ai essayé la dernière version du package NuGet, mais il semble y avoir une différence dans le mode de chargement / exécution du compilateur.

Dans la v0.2.0.0, le compilateur Roslyn serait chargé en mémoire, améliorant considérablement les performances des sites Web non pré-compilés avec plusieurs fichiers * .as * x / *. Cshtml. La nouvelle version, cependant, dispose d’un nouveau fichier /bin/roslyn/csc.exe , qui est exécuté une fois par fichier, supprimant complètement la fonctionnalité d’optimisation mentionnée ci-dessus …..

Or:

XMao 2 juin 2015 13:22

@Dmitry Le travail de csc.exe dans /bin/Roslyn consiste à appeler le VBCSComstackr.exe , qui se trouve dans le même dossier. VBCSComstackr.exe est le processus qui effectue le travail de compilation proprement dit. Si VBCSComstackr exécute déjà csc.exe, il sera réutilisé et nous continuerons donc à améliorer les performances mentionnées.

Hth …


Mise à jour: 10/2017

Semble que cela est pertinent après tout ce temps donc une nouvelle mise à jour.

La réponse ci-dessous par @Donny V est une option . En compilant complètement votre application, y compris toutes les Views ( .cshtml / .vbhtml ), vous n’auriez pas besoin de cet exe dans votre application.

Cela est vrai même si Visual Studio (à ce jour, VS 2017, prêtant à confusion) créera toujours /bin/roslyn et son contenu dans le processus de Publish , même si “full comstack” est défini .

Vous pouvez tester cela en excluant le dossier /bin/roslyn et son contenu lorsque vous envoyez votre application à votre fournisseur d’hébergement.

Mise en garde :

Comme mentionné, la compilation complète de votre application signifie que vous devrez la recomstackr, même pour les modifications du niveau View .

Ceci est pris à partir 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 à la désinstallation de ce package:

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

Certaines des nouvelles fonctionnalités du langage C # 6.0, si elles sont utilisées dans Views (projet MVC), ne seront pas compilées. Beaucoup de mes vues utilisent le?. opérateur de vérification null pour accéder aux propriétés du modèle. Toutes ces vues renvoient maintenant des erreurs sur mon application MVC 5 hébergée par Godaddy.

Cette erreur se produit car les vues (par défaut) sont compilées lors de l’exécution à l’aide du pipeline .NET (non pré-compilé).

Pour résoudre ce problème, décochez simplement l’option “Autoriser la mise à jour du site précompilé” dans les parameters de votre profil de publication. Cela devrait pré-comstackr vos vues et permettre à votre C # 6.0 (dernière version de Roslyn Comstackr) de fonctionner comme un champion.

Je voulais juste que quiconque regarde cette question connaisse la ramification de la désinstallation et pourquoi il y en a en premier lieu

Était en cours d’exécution dans ce problème tout le temps dans Visual Studio 2017 Community Edition où le projet n’a pas pu être reconstruit car les fichiers plus anciens dans bin / roslyn n’ont pas pu être supprimés. Sur la base du commentaire Gold de l’OP, je garde maintenant le gestionnaire de tâches ouvert (Ctrl + Maj + Échap) et je supprime le processus VBCS.exe. Les fichiers incriminés dans bin / roslyn peuvent maintenant être supprimés.

Une autre caractéristique est qu’il ne nécessite pas de serveurs de construction pour avoir des dépendances de compilation. Vous envoyez le compilateur que vous souhaitez utiliser avec le code au serveur de génération et il utilise exactement ce que vous lui avez dit.