none
No me compila los cambios C# RRS feed

  • Pregunta

  • Buenos dias, es mi primer consulta y no se como me va a ir, el asunto es que estoy creando una aplicación en WinForms desde VS2010, ella se conecta a BD desde un WCF que tengo ya instalado en IIS, todo iba perfecto hasta que decidí hacerle unas modificaciones al código de mi servicio, no quiero hacerlo muy extensa básicamente esto es lo que sucede.

    Manejo dos proyectos aparte, uno del wcf y otro de la aplicación, mediante la instancia del servicio le paso parametros a un método consultar para definir la tabla en la que voy a trabajar, sin embargo desde hace rato no me funciona, es como si se hubieran guardado los valores y aun cuando los cambio, le hago un clean solution y un rebuild solution siguen mis antiguos valores, ya borre los bin y los obj y nada, levante el servicio de nuevo y nada, necesito saber que podra estar pasando.

    jueves, 4 de febrero de 2016 10:37

Respuestas

  • Es muy raro. Si has eliminado tanto el código precompilado que puede generar el Visual Studio (al hacer Clean y Rebuild) como el que pueda generar el IIS (al eliminar la carpeta temporal) de algún otro sitio tiene que estar cogiendo el código que está ejecutando.

    Se me ocurren dos opciones:

    Comprueba que no es un error de código y que el problema no es que tu código no hace lo que tu esperas (por ejemplo que cargaCombo3 esté haciendo lo mismo que cargaCombo2)

    Comprueba que el sitio web que estás probando es realmente el que estás actualizando. Puede parecer tonto pero ¿a quién no le ha pasado alguna vez?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 5 de febrero de 2016 8:04
  • A ver si es tu caso.

    Si la aplicación ASP.NET no está compilada el IIS la va a compilando según se van realizando peticiones y deja el resultado de la compilación en una carpeta temporal.

    Para las siguientes peticiones utiliza los ensamblados de esta carpeta temporal para no tener que volver a compilar con cada petición.

    En principio, si un archivo ha sido modificado, el IIS debería volver a compilarlo en lugar de utilizar el ensamblado de la carpeta temporal. Pero esto no siempre funciona.

    Prueba a borrar esta carpeta temporal del servidor y a ver si te funciona.

    La carpeta la puedes encontrar dentro de la carpeta de Windows en:

    \Microsoft.NET\Framework64\v4.0.xxxx\Temporary ASP.NET Files

    Si el pool o la máquina está configurado para 32 bits en lugar de en la carpeta Framework64 estará en la carpeta Framework.

    Si estás utilizando un Framework anterior a la versión 4.0 la carpeta de la versión será v2.0xxxx.

    Dentro de esta carpeta temporal verás una carpeta por cada sitio que tengas en tu IIS. Borra la carpeta de tu proyecto y vuelve a probar.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta EduardoMT domingo, 14 de febrero de 2016 15:51
    jueves, 4 de febrero de 2016 12:18
  • Asier Villanueva no soy muy viejo en esto pero muchas veces me ha pasado y estoy seguro que a todos, a veces caemos en errores tan sin sentido, tal vez por el tiempo sentados frente a la maquina o por pensar en otras cosas.

     Pues a esta hora he podido resolver mi problema, no era ni código ni lógica ni WCF ni IIS, y probablemente las soluciones que me dieron tanto vos como Leandro hubieran funcionado, pero creo que se trataba de algún error de registro o interno de mi Visual Studio 2010, ya que lo desinstale como última medida y lo reinstale y  me funciona muy bien.

     Nuevamente gracias, por cierto antes de finalizar quiero pedirles su opinion acerca del VS2012 o el mas reciente, utilizo 2010 y no me he decidido a actualizar, no me gusta la interfaz del 2012, que opinan?

    viernes, 5 de febrero de 2016 9:14

Todas las respuestas

  • hola

    Que servidor web estas utilizando en los proyectos, es el IIS o el IIS Express ? esto lo puedes ver desde las propeidades del proyecto WCF

    Es un tema de informacion o de logica en el codigo ? porque una cosa es que la logica que ash programado no aplique y otra que los datos que esperas obtener no sean los correcto, o sea si es un tema de codigo o de datos

    si es de datos podria ser algun tipo de cache que este aplicando, podrias intentar ejecutar el comando "iisreset" para ver si al reciclar el servicio aplica algun cambio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 4 de febrero de 2016 11:04
  • Muchas gracias Leandro, bien el asunto creo que es mas de logica;

    He debug mi código incluso hasta cambiarme de solución y no se por que sucede pero es mas o menos asi:

    Aquí es donde esta lo extraño, tengo algunos métodos para el parámetro tabla con los valores 1 y 2, es decir

    public DataSet Consultar(int tabla, int opcionConsulta, string[] detalles){

    if (tabla == 1)

    {

     cargaCombo1(); // ejemplos de metodos 

    Este funciona bien

    }else if (tabla == 2)

    {

    cargaCombo2();

    Este tambien funciona

    } else if (tabla == 3) {

    cargaCombo3();

    Aca es donde esta el problema, por que no entra, aun cuando el parámetro tabla trae por valor un 3, es como si no existiera lo que esta acá, entonces probe colocando los métodos de acá y asignando enviando un 2 y me sigue realizando la operación que tenia en el, es decir, cambio el cargaCombo3() a la validacion del parametro tabla == 2 pero me sigue ejecutando cargaCombo2(). 

    }

    No se si me explico, no estoy seguro que sera, incluso probe la solucion del wcf en VS2012 y me permite hacer una prueba desde el menu del servicio y si me esta funcionando el metodo, me trae los resultados deseados desde BD, sin embargo en tiempo de ejecucion es como si ese metodo o lo que contiene ese ELSE IF no existiera. Gracias de antemano por intentar comprender mi problema

          

     Ah bueno y utilizo IIS, sobre el cual también tengo algunas consultas para cuando llegue la hora de poner en marcha la aplicacion.


    • Editado EduardoMT jueves, 4 de febrero de 2016 11:42
    jueves, 4 de febrero de 2016 11:31
  • hola

    y si pruebas definiendo

    }else if (tabla == 2) {

      cargaCombo3();

    }

    que hace ? o sea le envias un 2 y deberias ejecutar la carga

    entiendo que realizar un Rebuild ya lo realizaste , no ?


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina




    jueves, 4 de febrero de 2016 11:43
  • Si realice un rebuild, clean solution, y nada, y veras que es raro, hago eso que me dices, defino

    }else if (tabla == 2) {

      cargaCombo3();

    pero me ejecuta cargaCombo2( ), como si por debajo de lo que escribo quedaran las instrucciones, como si me permitiera agregar código pero se hubiera quedado en un punto anterior y no lleve los cambios.


    jueves, 4 de febrero de 2016 11:53
  • A ver si es tu caso.

    Si la aplicación ASP.NET no está compilada el IIS la va a compilando según se van realizando peticiones y deja el resultado de la compilación en una carpeta temporal.

    Para las siguientes peticiones utiliza los ensamblados de esta carpeta temporal para no tener que volver a compilar con cada petición.

    En principio, si un archivo ha sido modificado, el IIS debería volver a compilarlo en lugar de utilizar el ensamblado de la carpeta temporal. Pero esto no siempre funciona.

    Prueba a borrar esta carpeta temporal del servidor y a ver si te funciona.

    La carpeta la puedes encontrar dentro de la carpeta de Windows en:

    \Microsoft.NET\Framework64\v4.0.xxxx\Temporary ASP.NET Files

    Si el pool o la máquina está configurado para 32 bits en lugar de en la carpeta Framework64 estará en la carpeta Framework.

    Si estás utilizando un Framework anterior a la versión 4.0 la carpeta de la versión será v2.0xxxx.

    Dentro de esta carpeta temporal verás una carpeta por cada sitio que tengas en tu IIS. Borra la carpeta de tu proyecto y vuelve a probar.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta EduardoMT domingo, 14 de febrero de 2016 15:51
    jueves, 4 de febrero de 2016 12:18
  • Muchas gracias Asier, hice lo que me dijiste pero no, sigue sin reconocer, que extraño, igual voy a probar pasando otro tipo de datos como parámetros, tal vez un char o string, por que me reconoce el valor 1 y el valor 2 perfectamente, pero al enviar un 3 o otro se salta los pasos.

    Gracias de todos modos. 

    viernes, 5 de febrero de 2016 6:37
  • Es muy raro. Si has eliminado tanto el código precompilado que puede generar el Visual Studio (al hacer Clean y Rebuild) como el que pueda generar el IIS (al eliminar la carpeta temporal) de algún otro sitio tiene que estar cogiendo el código que está ejecutando.

    Se me ocurren dos opciones:

    Comprueba que no es un error de código y que el problema no es que tu código no hace lo que tu esperas (por ejemplo que cargaCombo3 esté haciendo lo mismo que cargaCombo2)

    Comprueba que el sitio web que estás probando es realmente el que estás actualizando. Puede parecer tonto pero ¿a quién no le ha pasado alguna vez?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 5 de febrero de 2016 8:04
  • Asier Villanueva no soy muy viejo en esto pero muchas veces me ha pasado y estoy seguro que a todos, a veces caemos en errores tan sin sentido, tal vez por el tiempo sentados frente a la maquina o por pensar en otras cosas.

     Pues a esta hora he podido resolver mi problema, no era ni código ni lógica ni WCF ni IIS, y probablemente las soluciones que me dieron tanto vos como Leandro hubieran funcionado, pero creo que se trataba de algún error de registro o interno de mi Visual Studio 2010, ya que lo desinstale como última medida y lo reinstale y  me funciona muy bien.

     Nuevamente gracias, por cierto antes de finalizar quiero pedirles su opinion acerca del VS2012 o el mas reciente, utilizo 2010 y no me he decidido a actualizar, no me gusta la interfaz del 2012, que opinan?

    viernes, 5 de febrero de 2016 9:14
  • La verdad es que personalmente estoy muy contento con el VS 2015, aunque puedes notar bajada en el rendimiento dependiendo de la máquina en que lo instales.

    Las modificaciones que se han hecho en las diferentes versiones ayudan mucho tanto en la edición de código como en la depuración.

    Si tienes dudas lo que puedes hacer es instalar la versión Community que es gratuita (viene a ser como una profesional) y probarla mientras sigues utilizando el VS 2010. Puedes tener ambas versiones instaladas en la misma máquina.

    Eso sí haz una copia de tu proyecto antes de abrirlo con la versión 2015 para asegurarte de que tienes disponible el proyecto en su versión para 2010. Yo estoy trabajando sobre un proyecto en el que algunos miembros del equipo utilizan la versión 2013 y otros la 2015, y podemos trabajar sin problemas con las mismas soluciones. Pero dudo mucho que con una versión 2010 puedas abrir una solución migrada a 2015.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 5 de febrero de 2016 15:07
  • Si tienes VS 2010 SP1 creo que sí se puede....

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 6 de febrero de 2016 12:34
    Moderador