Pregunta

Tengo una solución con muchos proyectos.Un proyecto contiene pocos componentes personalizados.Uno de estos componentes se utiliza para mostrar un título en una imagen.Podemos cambiar el color del fondo y muchas cosas más.

El problema es que SI decido cambiar el color predeterminado del fondo del componente o cambiar la posición del texto, ese cambio no se reflejará en todos los demás proyectos de la solución donde se utiliza el componente.He compilado el proyecto del componente y todos los demás proyectos hacen referencia al componente mediante el proyecto.

Por el momento lo que tengo que hacer es quitar los componentes del otro proyecto uno por uno y volver a agregarlos, luego todo está bien.¿Tienes una manera rápida de hacerlo?

ACTUALIZAR¡Agregué una casilla de verificación dentro de ese componente y parece que la casilla de verificación está en todas partes!¡Bien!Pero cuando una propiedad tiene alguna etiqueta que permite que el componente cambie (por ejemplo, el color de fondo), no cambia el valor "predeterminado", sino que coloca el valor anterior como un valor modificado en la propiedad.Entonces, veo el valor anterior establecido como si agrego cambiar manualmente el color en el panel Propiedades cuando no lo he hecho...

ACTUALIZACIÓN 2 texto alternativo http://img517.imageshack.us/img517/9112/oldonenewoneei0.png

Actualización 3:

Este problema todavía está aquí.Sólo para que la gente sepa que todavía tengo curiosidad por encontrar una manera.

He probado algunas de tus sugerencias.

  1. Si limpio toda la solución y construyo solo el proyecto que tiene el control personalizado, entonces construyo la solución.Nada cambia (para probarlo, cambié el color del componente a Amarillo.Nada cambia : fallar.
  2. Si elimino la referencia y la vuelvo a agregar al proyecto y luego reconstruyo la solución.Puedo ver el color antiguo en el diseñador: fallar.

He actualizado la pregunta con más información y una imagen (arriba) para aquellos que quieran intentar ayudarme.

Como puede ver, la antigua "compilación" del componente muestra el fondo Amarillo, pero cuando inserto un nuevo componente (desde la barra de herramientas izquierda en Visual Studio) puedo tener el nuevo componente con el supuesto fondo BLANCO...

¿Fue útil?

Solución

Lo más probable es que esto se deba a referencias.

Tus otros proyectos probablemente copiar en una referencia a su proyecto componente.Tendrá que reconstruir estos otros proyectos para que puedan volver a copiarlos en el proyecto del componente al que se hace referencia, si ha cambiado.Solo se actualiza en el momento de la compilación.

De alguna manera puedes solucionar esto haciéndolos parte de la misma solución.En ese caso, puede configurar su dependencias del proyecto correctamente y debería manejar las cosas por usted de forma casi automática.Pero tener todo en la misma solución no siempre es lo correcto.

Si ya los tienes como parte de la misma solución o no es un problema de referencias, puede deberse a serialización de componentes.Nos hemos encontrado con esta peculiaridad muchas veces al desarrollar controles personalizados.

Otros consejos

Supongo que el diseñador es inteligente y recuerda la configuración del componente tal como la tiene en el diseñador y, por lo tanto, la ve como predeterminada.

Esto no suena habitual.Hacer clic derecho en la solución y presionar "Limpiar solución" podría ayudar (eliminará todos los archivos DLL y ejecutables del directorio bin de cada proyecto, lo que obligará a que se produzcan nuevas compilaciones).

Es posible que también desees comprobar la secuencia del orden de construcción.

Trabajo en un proyecto que tiene un problema similar, descubrí que si tocas el archivo de configuración .NET o el archivo de información de ensamblaje (según el tipo de proyecto).Los otros proyectos reflejarán entonces el cambio de componentes...

No estoy seguro de por qué sucede esto, pero así es como lo supero...

Recientemente pasé a construir todo a través de Nant, y eso soluciona el problema por completo.

A veces, el Diseñador visual serializa todas sus propiedades en el código subyacente, incluso si tienen el valor predeterminado.

Si su componente tiene un color de fondo predeterminado de Rojo y usted cambia el color de fondo predeterminado a Azul, los componentes que usan su componente lo cambiarán nuevamente a Rojo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top