C # componente não atualizar quando o código fonte atualizada
-
01-07-2019 - |
Pergunta
Eu tenho uma solução com muitos projetos. Um projeto contém alguns componentes personalizados. Um desses componentes é utilizado para apresentar um título em uma imagem. Nós podemos mudar a cor do fundo e muitas outras coisas.
O problema é se eu decidir mudar a cor padrão do fundo do componente ou alterar a posição do texto, thoses mudança não irá refletir em todos os outros projetos da solução onde o componente é usado. Tenho compilent o projeto do componente e todos os outros projectos de referência o componente do projeto.
No momento, o que eu tenho a fazer é retirar o componente do outro projeto por um e adicioná-lo novamente, então está tudo bem. Você tem uma maneira rápida de fazê-lo?
Atualizar Eu adicionei um CheckBox dentro desse componente e parece que a caixa está em toda parte! Bem! Mas quando uma propriedade tem um pouco tag que deixar o componente para a mudança (exemplo como a cor do fundo) não alterar o valor "default", mas, em vez colocar o valor antigo como um valor alterado na propriedade. Então, eu vejo o valor antigo setado como se eu adicionar manualmente alterado a cor no painel Propriedades quando não tenho ...
UPDATE 2 texto alt http://img517.imageshack.us/img517/9112/oldonenewoneei0.png
Update 3:
Este problema ainda está aqui. Só para que as pessoas saibam que eu ainda estou curioso para encontrar um caminho.
Eu tentei algumas de suas sugestões.
- Se eu limpar toda a solução e construir somente o projeto que tem o controle personalizado, então eu criar a solução. mudança nada (Para testá-lo, eu tenho mudar a cor do componente a Yellow mudança nada:.. falha
- Se eu remover a referência e adicioná-lo de volta para o projeto e, em seguida, recriar a solução. Eu posso ver a cor antiga no designer:. falha
Eu atualizei a questão com mais informações e uma imagem (acima) para aqueles que querem tentar me ajudar.
Como você pode ver, o velho "compilação" do show componente do Fundo amarelo, mas quando eu inserir um novo componente (a partir da barra de ferramentas à esquerda no Visual Studio) eu posso ter o novo componente com o fundo branco suposto .. .
Solução
Este é provavelmente devido a referências .
Seus outros projetos provavelmente copiar em um referência ao seu projeto componente. Você vai ter que reconstruir esses outros projetos para que eles re-cópia no projeto componente referenciado, se ele mudou. Ele só é atualizado em tempo de compilação.
Você pode tanto contornar esta situação, tendo-lhes parte da mesma solução. Nesse caso, você pode configurar o projeto dependências corretamente e deve lidar com as coisas para você na maioria automaticamente. Mas ter tudo na mesma solução nem sempre é a coisa certa a fazer.
Se você já tê-los parte da mesma solução ou não é um problema referências, pode ser devido a serialização componente . Nós passar por essa peculiaridade muito quando fazendo o desenvolvimento de controle personalizado.
Outras dicas
Meu palpite é que o designer é inteligente e lembra as configurações para o componente que você tê-lo no designer e, portanto, vê-lo como padrão.
Isso não parece normal. botão direito sobre a solução e bater "Clean Solution" ajuda poder (ele irá apagar todas as DLLs e executáveis ??a partir do diretório bin de cada projeto, que forças fresco constrói a ocorrer)
Você também pode querer verificar a sua seqüência ordem de construção.
Eu trabalho em um projeto que tem um problema semelhante, eu descobri que se você tocar o arquivo .NET configuração ou montagem arquivo de informações (dependendo do tipo de projeto). Os outros projetos, então, refletir a mudança componente ...
Eu não tenho certeza por que isso acontece, mas é assim que eu vencê-lo ...
Recentemente eu tenho chave para a construção de tudo via Nant, e que cuida do problema completamente.
Às vezes o Designer serialize Visual todas as suas propriedades no código-behind, mesmo se eles têm o valor padrão.
Se o componente tem uma backcolor padrão de Red, e você alterar o backcolor padrão para azul, os componentes que usam o componente irá mudá-lo de volta ao vermelho.