Pergunta

Suponha que você tem dois separados ASP.NET projetos de aplicativos Web que ambos precisam usar um comum MasterPage.

Qual é a melhor maneira de compartilhar o MasterPage em projetos sem ter que duplicar o código?De preferência, sem ter que recorrer a fonte de controle ou sistema de arquivo de hacks.

Foi útil?

Solução

Eu tentando fazer a mesma coisa.Olhar para um par de soluções, mas eu acho que usando um diretório virtual é, provavelmente, a melhor forma de compartilhar páginas-mestre.

Aqui estão algumas fontes que você pode olhar.

O terceiro balas perto do fim, o artigo informa sobre possíveis maneiras de compartilhar Masterpages também.

Outras dicas

A Partir De K.Scott Allen ASP.Net Páginas Principais:Dicas, Truques e Armadilhas abaixo, em "Compartilhamento de Páginas Mestre":

A primeira alternativa é copiar mestre partilhada página de arquivos em um único local em um servidor web do IIS.Cada aplicativo pode criar um diretório virtual como um subdiretório e aponte o diretório virtual para o diretório real de páginas mestre.As aplicações podem, em seguida, definir o MasterPageFile propriedade de uma página para o nome da virtual diretório, além de o nome do ficheiro da página principal.Quando cair um atualizado arquivo de página mestra para o diretório real, a nova página principal serão exibidos em todos os aplicativos imediatamente.

Uma segunda abordagem é a utilização de um sistema de controle de versão para compartilhar um conjunto de mestre de página de arquivos em vários projetos.Mais controle de origem / sistemas de controle de versão suportar algum nível de "compartilhar" a funcionalidade, onde um arquivo ou pasta pode aparecer em mais de um projeto.Quando um desenvolvedor verifica em um sistema atualizado do ficheiro da página principal, os outros projetos vai ver as mudanças imediatamente (embora esse comportamento geralmente é configurável).Na produção e teste, cada aplicação seria necessário ser reinstalados para a atualização de página mestra para aparecer.

Finalmente, o VirtualPathProvider em ASP.NET 2.0 pode servir arquivos que não existe no sistema de arquivos.Com o VirtualPathProvider, um conjunto de páginas mestre poderia viver em tabelas de banco de dados que todos os aplicativos o uso.Para um excelente artigo sobre o VirutalPathProvider, ver "A virtualização de Acesso ao Conteúdo:Servindo o Seu Web Site a partir de um Arquivo ZIP”.

Manter uma cópia primária no controle de origem, e deixe o seu sistema de controle de origem preocupar com isso.

Supondo que você pode criar um repositório comum para todos os seus projetos (uma pasta comum em sua fonte de controle de árvore, por exemplo), você pode adicionar as páginas mestras como links usando caminhos relativos.

No entanto, IIRC, o Visual Studio faz cópias locais dos arquivos adicionados a partir externo caminhos.Poderá ter de texto-editar a solução/arquivo de projeto para adicionar os arquivos vinculados.

Isso, é claro, está supondo que você usar "Web Application" formato.Mais velhos VS "Web Sites" não têm arquivos de projeto e dependem de ter todos os arquivos dentro da pasta do site.

AFAIK não há nenhuma maneira elegante de fazer o que você está procurando..VS sempre vai acabar copiando-o.

Eu acho que, para ser honesto, não pode ser uma boa ideia..Obviamente você deseja compartilhar o menor código comum, mas de toda uma MasterPage?..Soa como você pode estar pedindo para ter problemas, pois uma pequena mudança pode ter um impacto em uma ou mais aplicações.

Gostaria de sugerir em vez seperating os bons pedaços de funcionalidade em componentes/controles e implantá-las.

Eu não posso ver por que você iria querer ter a mesma marcação através de diferentes projetos, se você fizer isso, eu não sei uma maneira fácil.

No entanto, com o código, obviamente, você pode escrever um arquivo de código que herda de

System.Web.UI.MasterPage

Colocar em qualquer que seja a lógica que você deseja em todas as páginas-mestre lá.Construí-lo como seu incrível dll, em seguida, basta incluir que em seus projetos.

Utilização um link simbólico:

Um link simbólico é um arquivo-objeto do sistema que aponta para outro arquivo objeto do sistema.O objeto a ser apontado é chamado de destino.Links simbólicos são transparentes para os usuários;os links aparecem como normal ficheiros ou directórios, e pode ser acionado pelo usuário ou aplicativo exatamente da mesma maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top