2014/10/17

Windows Update rompe aplicaciones web ASP.NET MVC 3 (patch version 3.0.0.1)

Si luego de una actualización de Windows Update has recibido alguno de los mensajes siguientes al querer compilar algún proyecto web:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): 
warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

error CS0234: The type or namespace name 'Mvc' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)

Lo que ocurrió fue que windows update ha instalado un parche (hotfix) para la versión de runtime que tenías referenciada, por lo que deberás actualizar la referencia para que te vuelva a compilar sin problemas.

La solución que me ha funcionado de maravilla, es la siguiente:
http://stackoverflow.com/questions/26406877/asp-net-mvc-security-patch-to-version-3-0-0-1-breaks-build

Los pasos a seguir son los siguientes:

1) Borra la referencia a la versión en desuso de System.Web.Mvc en tus proyectos afectados (Versión 3.0.0.0)
Esto lo hacemos buscando la carpeta llamada "References" en el root de tu aplicación web MVC, luego buscando la referencia llamada "System.Web.Mvc" dentro de carpeta y haciendo botón derecho y click en "Remove"

2) Agregar la referencia a la nueva versión de System.Web.Mvc (Versión 3.0.0.1)
Esto lo hacemos sobre la carpeta "References", botón derecho y click en "Add Reference...", se abrirá una ventana de dialogo donde debemos buscar la versión nueva que necesitamos.

3) Cambiar la propiedad de la nueva referencia a Copia local.
Esto lo hacemos ubicando la nueva referencia que acabamos de agregar en la carpeta "References", botón derecho y click en "Properties", luego ubicar el ítem que dice "Copy Local" y cambiar el valor a TRUE.

4) Finalmente en nuestro web.config debemos cambiar la referencia también.
Esto lo hacemos ubicando la sección correspondiente y cambiando la linea vieja por la nueva.

 <runtime>  
   <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
     <dependentAssembly>  
       <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />  
       <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />  
     </dependentAssembly>  
   ...  

Al terminar todo esto y volver a compilar debería andar todo bien.

2014/02/17

Visual Studio 2012 Intellisense (color en la clases) no funciona

Estaba usando alegremente mi Visual Studio 2012 como habitualmente lo hago cuando de un momento a otro noté que el querido intellisense había empezado a dejar de mostrarme las clases en color como siempre lo hacía.
Después de buscar en algunos foros el por qué de esta situación, parece ser que el culpable sería una extensión que siempre eh utilizado y cada tanto parece provocar esta falla, la extensión sería Productivity Power Tools 2012

La solución para que todo vuelva a funcionar como siempre, es deshabilitar una de las opciones de la extensión, más precisamente:

Herramientas -> Opciones -> Productivity Power Tools, y poner en OFF la opción "Colorized Parameter Help" (ver imagen)


Por supuesto una vez cambiada la opción debemos reiniciar el visual studio para ver los cambios.

2012/08/18

Entity Framework 4.3 Migrations (Migraciones)

La version 4.3 de Entity Framework viene con la posibilidad de utilizar migraciones para el desarrollo iterativo mediante Code-First y su impacto en la base de datos al mejor estilo Ruby on Rails.

Aquí les dejo una serie de tips que son muy útiles y recomiendo seguir para cualquiera que quiera incursionar en esta modalidad de trabajo.

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


Saludos!!!

2012/03/12

Curso de Saas (software as service) de la universidad de Berkeley

Recomiendo este curso de la Universidad de Berkeley, es online y totalmente gratis, eso sí se necesita saber un poco de inglés para saber que carahos se esta haciendo.

https://www.coursera.org/saas/auth/welcome

El curso recorre el modelo Saas (Software como servicio), utilizando para ello la tecnología Ruby on Rails (http://rubyonrails.org/) y servicios de cloud computing (computación en la nube) para hacer el deploy de los proyectos (http://www.heroku.com/ - http://aws.amazon.com/)


 

2011/12/19

IntelliTrace dejó de funcionar

Este es un error que por alguna razón me empezó a aparecer en el Visual Studio 2010 cuando quería hacer debugging con el IntelliTrace ("IntelliTrace is not collecting data for this debugging session.")



Después de peliarme un buen rato descubrí que el error (al menos en mi caso) se debía a tener activado el SQL Server debugger.
Entonces en caso de tener este error, recomiendo ir al tab de debug y asegurarnos de que el SQL Server debugger este desactivado.




2011/05/30

Uso de Firefox 4 - Notificador para gmail

En este ultimo tiempo hice uso básicamente de dos navegadores, el Chrome de Google y el Firefox de Mozilla, el Chrome es en general más rápido y tiene bastantes plugins hoy en día (tantos o aún más que el Firefox) más la ventaja de no tener que reiniciar y no tener problemas con la versiones para el uso de los mismos. Sin embargo aún hoy en día el Firefox es más utilizado como alternativa al Internet Explorer, sumado a que algunos sitios no terminan de funcionar correctamente con Chrome.

Es por eso que usaré al menos hasta nuevo aviso el Firefox 4 como navegador principal.
Una de las cosas que me costó un poco encontrar fue un notificador de correo para gmail, ya que el que usaba anteriormente no es compatible con esta nueva versión.

El plugin que ahora uso y recomiendo es: https://addons.mozilla.org/en-US/firefox/addon/gmail-manager/
Cuyo website es: http://www.longfocus.com/firefox/gmanager/

Espero que les sirva.

2011/04/13

User Control y Javascript en UpdatePanel

Cuando queremos utilizar script de javascript (server side) desde un user control que esta dentro de un update panel, podemos tener el problema de que el javascript no llegue al navegador hasta que se haga el postback lo que limita su uso en llamados asincronicos (AJAX), para solucionar esto disponemos de la clase ScripManager.

Veamos un ejemplo para ver su utilización:
Generalmente para mostrar un alert utilizamos el siguiente código:


Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "key", "alert('hola');", true);


Bueno, este código no funciona en un user control que este dentro de un update panel, para que esto funcione debemos reemplazar el código por la siguiente linea, que hace uso de la clase ScriptManager:


ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key", "alert('hola');", true);
Ahora el script funciona ok, espero que les sirva.

2011/02/21

Web Camp - Microsoft


Se viene el web camp de Microsoft a Buenos Aires, el evento será el 15 y 16 de marzo de 2011 (http://webcamps.ms/upcoming-web-camps.aspx)

Viene Phil Haack, uno de los desarrolladores más conocidos de Microsoft, presentarán las nuevas herramientas para desarrollo web basadas en MVC 3, un evento mas que interesante para todos los desarrolladores...

2010/11/27

CHM Viewer

Por razones que desconozco se me rompio el visor de .CHM (archivos de ayuda) de Windows.
Por eso, en lugar de buscar soluciones o reparaciones del mismo decidí buscar un nuevo programa que lo reemplace.

Fue ahí cuando me tope con KchmViewer  (http://www.kchmviewer.net/) un visor de archivos .chm (WinHelp) basado en C++/Qt que ademas es multiplataforma y opensource.

Por lo pronto mi experiencia con el mismo es excelente, no tuve ningun inconveniente al instalarlo y usarlo sobre Windows 7 y puede navegar los archivos de ayuda lo mas bien, muestra los links e imagenes de manera normal tambien.

Así que ya saben cuando quieran un visor de archivos de ayuda .chm recomiendo KchmViewer, el link de descarga es el siguiente: http://sourceforge.net/projects/kchmviewer/files/

2010/09/30

Nuevo Chrome Canario

Esta nueva edición de Chrome es especial para GEEKs, ya que es la versión mas adelantada del navegador Chrome, con funciones especiales habilitadas que no poseen los usuarios de Chrome Comunes.

La url de descarga es la siguiente: http://tools.google.com/dlpage/chromesxs

Es importante destacar que la instalación de Google Canary Build, es una instalación independiente pudiendo conservar al mismo tiempo la instalación de Google Chrome anterior.

Una vez descargado propongo probar los siguientes ejemplos de la tecnología WebGL:
https://sites.google.com/a/chromium.org/dev/developers/demos-gpu-acceleration-and-webgl

Siendo mis dos preferidos:
-El Acuario (http://webglsamples.googlecode.com/hg/aquarium/aquarium.html)
-La pared de imágenes (http://cooliris-wall.appspot.com/)

Pruebenlo, y me cuentan...

2010/09/05

Validacion en UserControls

Los UserControls nos permiten encapsular cierto funcionamiento de manera que pueda o no interferir con el funcionamiento global de la pagina que lo contiene.

Hay situaciones en las que deseamos que el funcionamiento sea completamente independiente, en estos casos queremos que también la validación (a través de RequiredFieldValidator, RangeValidator, ValidationSummary, etc) sea independiente.

Para estos casos necesitamos hacer uso de una propiedad que poseen los controles llamada: ValidationGroup
De esta forma lo que haremos en encapsular la validacion de un UserControl con un codigo unico para que no modifique el funcionamiento habitual de la pagina, por ejemplo, un boton de la pagina contenedora no se verá afectada por los campos requeridos de nuestro UserControl.

Una manera de asegurarnos que el codigo del grupo de validacion sea unico es agregar una propiedad interna a nuestro UserControl:

protected string UniqueValidationGroup { get { return this.ClientID + "MyValidationGroup"; } }


Y luego desde el código usarla para setiar el ValidationGroup, en cada control que lo necesite los cuales serán tipicamente los controles de validación (RequiredFieldValidator, RangeValidator, ValidationSummary, etc) asi como tambien los botones que deberian causar esas validaciones dentro de nuestro UserControl.

ValidationGroup='<%# UniqueValidationGroup %>'

2010/09/01

Globalization en ASP.NET

La globalizacion nos permite que un sitio tenga una cultura definida y que no dependa de la cultura del browser del cliente.

Para fijar la cultura debemos poner lo siguiente en el web.config
<globalization uiCulture="es" culture="es-AR" />

El mismo va colocado dentro del tag:
<system.web>
    ...

En este caso estamos setiando el idioma Español y la cultura de Argentina.

AjaxControlToolkit Error

Si tenemos el error:

Could not find any resources appropriate for the specified culture or the neutral culture. Make sure "AjaxControlToolkit.Properties.Resources.NET4.resources" was correctly embedded or linked into assembly "AjaxControlToolkit" at compile time, or that all the satellite assemblies required are loadable and fully signed.

 Se soluciona simplemente agregando lo siguiente en la parte superior de la pagina donde usemos AJAX

<asp:ScriptManager ID="ScriptManager1" runat="server"><asp:ScriptManager>

2010/08/18

ASP.NET Framework 2.0 y 4.0 en el mismo servidor

Es posible correr en un mismo servidor sitios que esten hechos con el Framework 2.0 (fwk 2.0) y sitios que esten hechos con el Framework 4.0 (fwk 4.0), pero para eso debemos realizar un paso previo y uno posterior.

El problema es que las aplicaciones (sitios webs) que corran con diferentes frameworks no pueden estar sobre el mismo proceso de ejecucion, por ende debemos separar en diferentes procesos los sitios de fwk 2.0 y fwk 4.0

-Primero: desde el IIS manager debemos crear una nueva instancia en el 'Grupo de Aplicaciones', en esta caso lo llamaremos 'NetVersion4' (ver imagen adjunta), con esto lo que estamos haciendo es crear la instancia para un proceso nuevo

-Luego agregamos el sitio nuevo, como lo hariamos normalmente.

-Finalmente en las propiedades del sitio, desde la solapa de 'Directorio Particular' debemos cambiar el grupo de aplicacion, del default al que acabamos de crear en nuestro caso 'NetVersion4' (ver imagen adjunta), luego en la solapa ASP.NET, debemos seleccionar el fwk 4.0



Finalmente cabe aclarar que estos cambios nos obligara reiniciar el IIS por lo tanto se recomienda realizar el proceso en momentos de bajo trafico.

2010/08/11

2010/08/03

Instalacion de ASP.NET MVC sobre IIS (Internet Information Server)

Para instalar ASP.NET MVC / MVC2 sobre IIS tenemos varias opciones las cuales dependeran practicamente de la version de Windows del servidor.

Para Windows 2003 Server, tendremos disponible la version 6.0 del IIS (IIS6), para Windows 2003 Server no se puede actualizar a la version de IIS7 (version 7.0 del IIS) con lo cual deberemos realizar varias tareas para realizar la implementacion.

En este blog, estan explicados muy bien los pasos a seguir para cada caso:
http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Para Windows 2008 Server / Windows 2008 R2 Server tenemos disponible la versión 7.0 del IIS (IIS7), con lo cual la instalación es transparente.

2010/07/23

Error SQL Server linked Server

El proveedor OLE DB "Microsoft.Jet.OLEDB.4.0" para el servidor vinculado "x" devolvió el mensaje "La operación debe usar una consulta actualizable."

Cuando obtenemos este error al querer realizar sobre el linked server una operación de actualizacion debemos verificar dos cosas:

1) Los permisos del login remoto, es decir, en este caso del Access al cual queremos acceder; por default el login es 'admin' y password vacio.

2) Los permisos de escritura del archivo fisico, es decir el .mdb, en el filesystem