Publish Web Site: Allow this precompiled site to be updatable
Seguro que has publicado varios sitios y nunca te has fijado en este check:

Pues te diré que es tremendamente útil para la publicación de un sitio Web en hosting que no son de nuestro dominio (Hosting de terceros) para evitar que el código cliente de nuestra aplicación sea modificado, porque un administrador o quien tenga permiso, puede modificar (Mirar el código cliente no lo podrá hacer sobre la página aspx como veremos mas adelante, pero usando reflector podrá ver el contenido de la assembly) el código cliente de nuestra aplicación Web (aspx), los skin...
Para ello vamos a ver la diferencia entre publicar un sitio web marcando esta opción y desmarcándola:
| MARCADO | DESMARCADO |
|  Raíz |  Raíz |
| App_Themes | App_Themes |
| bin |
|
Como se puede observar la cosa cambia bastante. Las dos diferencias más significativas que podemos observar a simple vista es que el archivo Blue.skin ha desaparecido de la carpeta de App_Themes/Blue y que el contenido del directorio bin ha cambiado.
¿Que ha sucedido?
Al desmarcar el check el compilador de ASP.NET (aspnet_compiler.exe) ha compilado el contenido de las páginas aspx y los skin en assemblies, lo que evita que el código de cliente pueda ser modificado, para elllo sólo basta con intentar abrir con el notepad el fichero Default.aspx:
Y para ver donde está el contenido de la página aspx utilizamos reflector para ver el código de la assembly:
En el método __BuildControlTree(default_aspx) se genera el árbol de la página:
Dejando este check marcado es equivalente a pasarle como parámetro al compilador de ASP.NET el parámetro -u y el código es visible
-u Si se especifica, la aplicación precompilada puede actualizarse.
Espero que os haya sido de utilidad y que os ayude a proteger un poco más vuestras aplicaciones Web y sin que se me olvide, para complementar esto deberíamos encriptar aquella información de carácter privado de nuestro Web.Config ;)
Un saludo