Usando o publisher assemblies de diretiva

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 891030
Suporte ASP.NET voz coluna: Usando o publisher assemblies de diretiva
para personalizar esta coluna às suas necessidades, queremos convidá-lo para enviar suas idéias sobre tópicos que interessam a você e problemas que você deseja ver abordados artigos do Knowledge Base no futuro e colunas de voz de suporte. Você pode enviar suas idéias e comentários usando o formulário Ask For It. Há também um link para o formulário na parte inferior desta coluna.
Este artigo foi publicado originalmente como coluna de voz de suporte do ASP.NET suporte voz em setembro de 2004. Isso não é um artigo da base padrão de dados.
INTRODUÇÃO
Saudação novamente e bem-vindo a edição de setembro ' 04 da coluna de voz de suporte. Eu gostaria de agradecer a Jim Cheshire , um engenheiro de suporte aqui na Microsoft ASP.NET, de suporte para suas contribuições. Jim tem excelentes idéias para a coluna de voz de suporte e queira compartilhá-los. Procure por contribuições do Álvaro sobre próximos meses e como sempre, envie suas sugestões para colunas futuras. Jim Obrigado!

Jim tem trabalhado com a Microsoft há seis anos em equipes FrontPage, VB e ASP.NET. Durante esse tempo, ele escreveu para o Office Developer Center no MSDN e é autor de um livro no FrontPage, especial Edition usando o Microsoft Office FrontPage 2003 . Jim também tem um site onde ele fornece suplementos livres para o FrontPage permitem aos desenvolvedores da Web que o máximo de produtos da Microsoft. É aqui que endereço do site: Portanto, recepção até uma cadeira, disparar a de sapatos, leia nossa coluna Tudo sobre assemblies de diretiva usando o publisher e lembre-se, você pode enviar suas idéias para nós usando o link "ASK FOR IT" incluído em cada coluna publicados.

Jeremy
Usando o publisher assemblies de diretiva
Se você já tiver trabalhado com componentes COM em seus aplicativos da Web, é provável você contar mesmo entre aqueles que comemorados a chegada do Microsoft .NET Framework e a facilidade com que agora você pode atualizar componentes que faz referência a seu aplicativo da Web. Na maioria dos casos, a atualização de um componente é tão simples como soltar uma nova compilação na pasta bin ou no cache global de assemblies (GAC). No entanto, até mesmo no mundo do .NET, é possível quebrar quando você atualiza um componente de ligação de assembly. Felizmente, o .NET Framework fornece maneiras que você pode controlar de ligação de assembly. Uma maneira poderosa (e compreendida raramente) de utilizando esse controle é o assembly de diretiva de editor. Neste artigo, Vou mostrar como usar um assembly de diretiva de editor para forçar o aplicativo para vincular a uma versão específica de um assembly que está localizado no GAC.

Métodos de ligação de assembly

Antes de eu me aprofundar nas especificações de assemblies de diretiva de editor, é importante que você compreenda as maneiras de ligação de assembly pode ser interrompida. Cada assembly .NET é identificada usando quatro características:
  • Nome do assembly
  • Versão principal ou secundária
  • Token de chave pública
  • Cultura
Se você alterar um ou mais dos seguintes, a ligação para o assembly será quebrada. Por exemplo, se você referenciar versão 1.0.1 de um componente no seu aplicativo Microsoft ASP.NET e em seguida, recompilar o componente para versão 1.0.2, ASP.NET usará automaticamente versão 1.0.2. No entanto, se você recompilar o componente para versão 1.1.0, ASP.NET continuará a usar o 1.0.1 versão mesmo que uma versão posterior está instalada no GAC porque o assembly de ligação é interrompido quando a versão secundária do assembly é alterado.

Na maioria dos casos, isso é exatamente o que você deseja que aconteça. No entanto, pode haver casos em que você deseja forçar o aplicativo ASP.NET para usar uma nova versão até mesmo quando uma das quatro características de identificação é alterado. Suponha, por exemplo, se você for um desenvolvedor de controles de servidor personalizado. Você resolveu apenas alguns bugs pequenas em alguns dos métodos no seu controle de servidor. Você também adicionou algumas novas funções legais e você deseja se certificar que qualquer pessoa que esteja usando o controle em qualquer aplicativo existente tem acesso a novas funções. No entanto, devido a implementação do controle de versão, incrementado a compilação secundária para o assembly. Quando o controle está instalado no GAC no servidor Web, aplicativos ASP.NET que foram compilados com a versão original não usará a nova versão automaticamente.

Há algumas maneiras que você pode forçar o aplicativo para usar uma versão específica de um assembly. Você pode adicionar um redirecionamento de ligação para um arquivo web.config ou para o arquivo machine.config. Que exigirá que você modificar um arquivo de configuração, o que significa que você não pode simplesmente apontar os administradores do servidor para um pacote de instalação para a nova versão do seu componente e tiver aplicativos existentes usá-lo automaticamente. Redirecionando usando o arquivo web.config possui um shortcoming adicional em que ele requer o desenvolvedor ou administrador saber quais aplicativos estão usando seu componente para que ele possa atualizar o arquivo web.config. Então, como você pode fazer facilmente todos os aplicativos existentes que usam a nova versão do seu componente simplesmente pela instalação da nova versão do componente? Se a resposta é usar um assembly de diretiva de editor, você está perfeitamente certas!

O que é um assembly de diretiva de editor?

Um assembly de diretiva de Editor é um assembly que configura a diretiva a ser usada quando o .NET runtime vincula a um assembly. O assembly de diretiva de Editor é instalado no GAC e é denominado usando a seguinte convenção:
major_ver.minor_ver.assembly.dll diretiva.
O major_ver e minor_ver se referir a versão da versão antiga do assembly principal e secundária. Portanto, se você estiver atualizando a versão 1.0 do Website.dll para a versão 2.0, e desejar que todos os aplicativos existentes para vincular a nova versão, o nome de assembly de diretiva do editor seria:
Policy.1.0.Website.dll
Depois que este assembly da diretiva publisher for instalado no GAC, qualquer aplicativo que faz referência a versão 1.0 do Website.dll se ligará a versão 2.0 do Website.dll em vez disso. Neste ponto, você pode estar se perguntando como o runtime do .NET sabe para vincular a versão 2.0 do Website.dll quando ele vê o assembly de diretiva de editor no GAC. A resposta reside no arquivo de diretiva de editor, um arquivo de configuração XML que é usado para criar o assembly de diretiva de editor.

O arquivo de diretiva publisher

O arquivo de diretiva de editor contém as informações necessárias para redirecionar a ligação de uma versão de um assembly para uma nova versão. Depois de criar o arquivo de diretiva publisher, você usar o utilitário de vinculador de assembly .NET (Al.exe) para criar o assembly de diretiva de editor.

Eis um exemplo de um arquivo de diretiva de editor que redireciona qualquer referência a versão 1.0 do Website.dll para a versão 2.0. O token de chave público pode ser obtido examinando as propriedades do assembly no GAC instalado no momento.
<configuration>    <runtime>        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">            <dependentAssembly>                <assemblyIdentity name="website" publicKeyToken="18517ea673f8584b" culture="neutral" />                    <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>            </dependentAssembly>        </assemblyBinding>    </runtime></configuration>
depois de criar o arquivo de diretiva Editor, salve-o com uma extensão de arquivo .config, por exemplo, .config de website. Você, em seguida, use a ferramenta do Assembly Linker para criar o assembly de diretiva de editor.

Todo o processo

cenário: você deseja garantir que qualquer aplicativo ASP.NET atualmente fazendo referência a versão 1.0 do seu controle de servidor usa versão 2.0 em vez disso, após instalar a versão atualizada. Você não quer qualquer pessoa precisará modificar arquivos de configuração para que isso aconteça. Você com sabedoria determinou que um assembly de diretiva de Editor é a maneira ir.

Isso é como você deve prosseguir.
  1. alterar a versão e a recompilação. A primeira etapa é criar a nova versão do seu componente. Depois disso, você precisará modificar o número da versão no arquivo AssemblyInfo para seu componente.
  2. criar arquivo de diretiva de editor. Crie o arquivo de diretiva Editor para o assembly usando o formato mostrado acima.
  3. Uso do Assembly Linker (Al.exe) para criar assembly de diretiva de editor. O vinculador de assembly está incluído no SDK do .NET Framework. Para criar o assembly de diretiva de editor que redireciona uma ligação de versão 1.0 do Website.dll para a versão 2.0 usando um arquivo de diretiva de editor chamado website.config, execute o seguinte comando:
    al /link:website.config /out:policy.1.0.website.dll /keyfile:c:\keyfile.snk
    este comando criará um novo conjunto chamado policy.1.0.website.dll. Essa convenção de nomenclatura é importante, conforme indicado na seção "O que é um assembly de diretiva do Publisher?".
  4. instalar o assembly da diretiva Editor para o cache de assembly global. O assembly de diretiva de editor está instalado no GAC. Ele será usado pelo tempo de execução .NET quando qualquer aplicativo tenta ligar a versão 1.0 do Website.dll e ele forçará o aplicativo para vincular automaticamente a nova versão.
  5. instalar a nova versão para o cache de assembly global. Instale a nova versão do componente no GAC. Depois que a nova versão tiver sido instalada, a versão antiga pode ser removida com segurança.
  6. Reinicie o Microsoft Internet Information Services (IIS). A etapa final é reiniciar o IIS. Isso é necessário devido à maneira como o runtime do .NET vincula a um assembly. Se o runtime do .NET já foi vinculado a um conjunto específico, ele será reutilizar essa ligação. Portanto, para o redirecionamento de ligação para o novo conjunto de trabalho, você deve reiniciar o processo do operador.
Após concluir essas etapas, qualquer aplicativo que foi criado com uma referência para a versão 1.0 do Website.dll irão usar automaticamente versão 2.0. Assemblies de diretiva Publisher oferecem uma maneira conveniente para garantir que os desenvolvedores tenham controle total sobre ligação de assembly. Como você viu neste artigo, se seu objetivo é forçar os aplicativos existentes para usar uma nova versão do seu componente, um assembly de diretiva de editor fornece a você a confiança que aplicativos sempre usará a versão que você espera que eles usem sem ter que alterar os arquivos de configuração ou dependem de alterações manuais por um administrador de servidor.

Até próxima vez,
Jim Cheshire
Engenheiro de suporte
Suporte do Microsoft Developer
Como sempre, vontade enviar idéias sobre tópicos desejado no futuro abordada colunas ou na Base de dados de Conhecimento usando o formulário Ask For It.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 891030 - Última Revisão: 05/18/2007 08:38:17 - Revisão: 2.3

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1

  • kbmt kbhowto kbasp KB891030 KbMtpt
Comentários