Etiquetado: Visual Studio

Editar y continuar cuando modificamos el ViewBag en MVC

Hace años que podemos editar y continuar en Visual Studio cuando desarrollamos en ASP.Net con el IISExpress y cada día mejoran esta funcionalidad. En Visual Studio 2013 nos simplificaron la tarea habilitando la opción por defecto:
Edit and continue en Web
Aunque nada es perfecto y hay algunas ocasiones en las que editar y continuar no nos va a funcionar: si es async, si hay un lambda, etc. Uno de esos casos lo encontraremos al modificar el objeto ViewBag, pues es un objeto marcado como dynamic y por ahora no se puede modificar y continuar con este tipo de objetos mientras estamos en ejecución:
Edit and continue with viewbag
En este caso, aunque no nos servirá para todos los escenarios, podemos cambiar el objeto desde la Immediate Window e incluso añadir propiedades si es necesario:
Immediate Window dynamic properties

Anuncios

Deshabilitar el compilador Roslyn temporalmente

El nuevo compilador de .Net todavía está en CTP y no tiene licencia para desplegar aplicaciones en producción. Si instalas Roslyn en la máquina que utilizas para desarrollar cada día, vas a tener que desinstalarlo antes de compilar código para producción, pues sustituye completamente al compilador de .Net, incluso el de línea de comando.

La instalación y desinstalación de Roslyn es bastante rápida, pero tenemos otra forma de deshabilitar el compilador que nos ahorrará algo de tiempo. Será tan fácil como definir el valor true en la variable DisableRoslyn. Podemos indicar este valor de dos formas: como parámetro de msbuild o como variable de entorno.

Desde Visual Studio podemos definir una propiedad a nivel de proyecto que pasará a msbuild y deshabilitará Roslyn, así:

<PropertyGroup>
  <DisableRoslyn>true</DisableRoslyn>
</PropertyGroup>

Pero tendremos que hacerlo a nivel de cada proyecto y si queremos volver a habilitar Roslyn tendremos que volver a editar todos los proyectos. En realidad es mucho más fácil establecer una variable de entorno llamada DisableRoslyn y asignar un true o un false según nos convenga en cada momento:

Disable Roslyn

Yo me he hecho un .bat y lo he añadido a mi barra de tareas como un botón de activar/desactivar:

@echo off
IF "%DisableRoslyn%"=="true" (
setx DisableRoslyn false
echo Roslyn compilation enabled
) ELSE (
setx DisableRoslyn true
echo Roslyn compilation disabled
)
pause 0

Ahora ya no tenéis excusa para probar Roslyn.

Aunque yo me enteré de esto directamente, ahora es más fácil saber estas cosas: basta mirar el código fuente de http://roslyn.codeplex.com, en este caso veréis la explicación en el archivo CompilerPachage.cs:
CompilerPackage.cs