asp.net web api - how - Qué/por qué Roslyn es "necesaria" en la carpeta/bin de Asp.Net
how to remove roslyn (4)
Hay un montón de
preguntas relacionadas
con esto, aunque la mayoría de las respuestas
definen a
Roslyn y / o proporcionan una "solución" a algún problema (
exe
, con proveedores de hosting, etc.)
Lo que parece que no puedo rastrear es el "por qué" y el "para qué" (quizás solo en el contexto de ASP.Net MVC / Web API) en
/bin/roslyn
.
Me encontré con problemas similares (hosting - restricciones
.exe
, soporte para
4.6
, etc.) y mi "solución" fue
"simplemente implementar en Azure"
(por supuesto, todo funciona sin problemas).
Pero realmente, esto no responde:
-
¿Por qué son necesarios? -
¿Significa esto que se usan para la compilación en
runtime
deruntime
(mi cerebro apunta a esto, pero eso es una suposición completa / mi quizás equivocado grok), como muestra esta publicación SO, a menos que se corrija, esto es "eso" (más abajo). -
parece que "eliminar el paquete" es una "solución"
(basada en algunas respuestas anteriores)
,
pero si es así, (re) plantea la pregunta
Creo que
entender
esto ayudará, por ejemplo, no puedo ser el único que levantará una ceja al ver un
.exe
"necesario" ...
Actualizar
Va a mostrar que existen "gemas ocultas" :) He
leído esto una y otra vez
... después de todo, ha estado allí durante algún tiempo,
pero
no
el hilo de comentarios
, el enlace referenciado original, alrededor de 2014, ha sido rediseñado por Microsoft y los comentarios ya no se muestran ... afortunadamente, las partes relevantes están a continuación.
GRAN error: me estaba mirando todo este tiempo (o al menos desde este intercambio):
Dmitry Dzygin 2 de junio de 2015 12:53 a.m.
He probado la última versión del paquete NuGet, pero parece haber una diferencia en la forma en que se carga / ejecuta el compilador.
En la v0.2.0.0, el compilador de Roslyn se cargaría en la memoria, mejorando en gran medida el rendimiento para sitios web no precompilados con múltiples archivos * .as * x / *. Cshtml. Sin embargo, la nueva versión presenta un nuevo archivo
/bin/roslyn/csc.exe
, que se ejecuta una vez por archivo, eliminando por completo la función de optimización mencionada anteriormente .....
Oro:
XMao 2 Jun 2015 1:22 PM
@Dmitry El trabajo de
csc.exe
en/bin/Roslyn
es invocar elVBCSCompiler.exe
, que se encuentra en la misma carpeta.VBCSCompiler.exe
es el proceso que realiza el trabajo de compilación real. Si el VBCSCompiler ya se está ejecutando, csc.exe lo reutilizará y, por lo tanto, aún obtendremos la mejora de rendimiento mencionada.
Hth ...
Actualización: 10/2017
Parece que esto es relevante después de todo este tiempo, así que una actualización adicional.
La
respuesta a continuación por @Donny V
es una
opción
.
Al compilar completamente su aplicación, incluidas todas las
Views
(
.cshtml
/
.vbhtml
), no necesitaría ese
exe
en su aplicación.
Esto es cierto incluso si Visual Studio (hasta el día de hoy, VS 2017, de manera confusa) seguirá creando
/bin/roslyn
y sus contenidos en el proceso de
Publish
,
incluso si se establece "compilación completa"
.
Puede probar esto
excluyendo
la carpeta
/bin/roslyn
y sus contenidos al
/bin/roslyn
su aplicación a su proveedor de alojamiento.
Advertencia :
Como se mencionó, compilar completamente su aplicación significa que tendrá que volver a compilarla, incluso para los cambios de nivel de
View
.
Esta versión de Visual Studio contiene una nueva versión del código de compiladores de C # y VB.net llamada "Roslyn".
Roslyn es una reescritura completa de los compiladores de C # y VB.net con cada uno escrito en su lenguaje respectivo, por ejemplo, el compilador de C # está escrito en C # en lugar de C ++. ¡Roslyn es de código abierto (Roslyn en GitHub), por lo que teóricamente incluso podrías crear tu propia versión de C # o VB.net!
Lo que se convertiría en Roslyn, fue mencionado por primera vez en 2008 por Anders Hejlsberg en la conferencia PDC, sin embargo, no fue hasta 2011 que se lanzó la primera vista previa.
Puede consultar los siguientes enlaces para obtener información más detallada sobre su problema.
https://visualstudiomagazine.com/articles/2012/03/20/10-questions-10-answers-on-roslyn.aspx
De: https://forums.asp.net/t/2079727.aspx?What+is+the+roslyn+folder+
Esto está tomado del foro de 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
He notado un pequeño inconveniente para desinstalar este paquete:
https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Algunas de las nuevas características del lenguaje C # 6.0 si se usan en Vistas (proyecto MVC) no se compilarán. Muchas de mis vistas usan el?. operador de comprobación nulo para acceder a las propiedades del modelo. Todas estas vistas ahora devuelven errores en mi aplicación MVC 5 alojada en Godaddy.
Este error se produce porque las Vistas (por defecto) se compilan en tiempo de ejecución utilizando la canalización .NET (no precompilada).
Para resolver este problema, simplemente desmarque la opción "Permitir que el sitio precompilado sea actualizable" en la configuración de su perfil de publicación. Esto debería precompilar sus vistas y permitir que su C # 6.0 (última versión del compilador de Roslyn) se ejecute como un campeón.
Solo quería que cualquiera que mirara esta pregunta conociera la ramificación de desinstalarla y por qué está ahí en primer lugar
Me encontré con este problema todo el tiempo en Visual Studio 2017 Community Edition, donde el proyecto no se pudo reconstruir porque los archivos más antiguos en bin / roslyn no se pudieron eliminar. Basado en el comentario Gold del OP, ahora mantengo abierto el Administrador de tareas (Ctrl + Shift + Esc) y elimino el proceso VBCS.exe. Los archivos ofensivos en bin / roslyn ahora se pueden eliminar.
Otra característica es que no requiere que los servidores de compilación tengan dependencias del compilador. Envías el compilador que quieres usar CON el código al servidor de compilación y solo usa exactamente lo que le dijiste.