Partilhar via


Etapa 1: Examinando os arquivos de configuração

Comportamento de ligação de assembly pode ser configurado em diferentes níveis com base em três arquivos XML:

  • Arquivo de configuração do aplicativo.

  • Arquivo de diretiva de editor.

  • Arquivo de configuração da máquina.

Esses arquivos seguem a mesma sintaxe e fornecem informações, como redirecionamentos, o local do código, de ligação e modos de ligação para assemblies específicos. Cada arquivo de configuração pode conter um <assemblyBinding> elemento que redireciona o processo de vinculação. Elementos filho de <assemblyBinding> elemento incluem o <dependentAssembly> elemento. Os filhos do <dependentAssembly> elemento incluem o <assemblyIdentity> elemento, o <bindingRedirect> elementoe o <codeBase> elemento.

Observação

Informações de configuração podem ser encontradas nos arquivos de configuração de três; nem todos os elementos são válidos em todos os arquivos de configuração.Por exemplo, informações de caminho particular e o modo de ligação só é possível no arquivo de configuração do aplicativo.Para obter uma lista completa das informações contidas em cada arquivo, consulte Configurando aplicativos.

Application Configuration File

Primeiro, o common language runtime verifica o arquivo de configuração do aplicativo para obter informações que substitui as informações de versão armazenadas no manifesto do assembly de chamada. O arquivo de configuração do aplicativo pode ser implantado com um aplicativo, mas não é necessário para a execução do aplicativo. Normalmente, a recuperação desse arquivo é quase instantânea, mas em situações onde a base do aplicativo em um computador remoto, como em um cenário baseado na Web do Internet Explorer, o arquivo de configuração deve ser baixado.

Para arquivos executáveis do cliente, o arquivo de configuração de aplicativo reside no mesmo diretório do executável do aplicativo e tem o mesmo nome base do executável com uma extensão. config. Por exemplo, o arquivo de configuração para c:\Arquivos de Files\Myapp\Myapp.exe é c:\Arquivos de Files\Myapp\Myapp.exe.config. Em um cenário baseado em navegador, o arquivo HTML deve usar o <link> elemento explicitamente apontar para o arquivo de configuração.

O código a seguir fornece um exemplo simples de um arquivo de configuração do aplicativo. Este exemplo adiciona um TextWriterTraceListener para o Listeners coleção para ativar a informações de gravação de depuração para um arquivo.

<configuration>
   <system.diagnostics>
      <trace useGlobalLock="false" autoflush="true" indentsize="0">
         <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
         </listeners>
      </trace>
   </system.diagnostics>
</configuration>

Arquivo de política do Publisher

Em segundo lugar, o tempo de execução examina o arquivo de diretiva de editor, se houver. Arquivos de política do Publisher são distribuídos por um editor de componente como uma correção ou atualização de um componente compartilhado. Esses arquivos contêm informações de compatibilidade emitidas pelo Editor do componente compartilhado que direciona uma referência de assembly para uma nova versão. Ao contrário do aplicativo e os arquivos de configuração de máquina, arquivos de política do publisher estão contidos no seu próprio assembly que deve ser instalado no cache global de assemblies.

Este é um exemplo de um arquivo de configuração de diretiva de editor:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

            <dependentAssembly>
                <assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" /> 
                <bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>  
            </dependentAssembly>

        </assemblyBinding>
    </runtime>
</configuration>

Para criar um assembly, você pode usar o AL.exe (do Assembly Linker) ferramenta com um comando, como a seguir:

Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0

compatkey.daté um arquivo de chave de nome forte. Este comando cria um assembly de nome forte, que você pode colocar no cache global de assemblies.

Observação

Diretiva de editor afeta todos os aplicativos que usam um componente compartilhado.

O arquivo de configuração de diretiva do publisher substitui as informações de versão que vem do aplicativo (ou seja, a partir de manifesto do assembly ou o arquivo de configuração do aplicativo). Se não houver nenhuma instrução no arquivo de configuração do aplicativo para redirecionar a versão especificada no manifesto do assembly, o arquivo de política do publisher substitui a versão especificada no manifesto do assembly. Entretanto, se houver uma instrução redirecionando no arquivo de configuração do aplicativo, diretiva de editor substitui essa versão, em vez de especificado no manifesto.

Um arquivo de política do publisher é usado quando um componente compartilhado é atualizado e a nova versão do componente compartilhado deve ser selecionada por todos os aplicativos usando o componente. As configurações no arquivo de diretiva de editor substituem as configurações no arquivo de configuração do aplicativo, a menos que o arquivo de configuração do aplicativo impõe o modo de segurança.

Modo de segurança

Arquivos de política do Publisher geralmente explicitamente são instalados como parte de um service pack ou o programa de atualização. Se houver qualquer problema com o componente compartilhado atualizado, você pode ignorar as substituições no arquivo de diretiva de editor usando o modo de segurança. Modo de segurança é determinado pelo < publisherPolicy apply = "Sim |não "/ > elemento, localizado apenas no arquivo de configuração do aplicativo. Especifica se as informações de configuração de diretiva de editor devem ser removidas do processo de vinculação.

Modo de segurança pode ser definido para o aplicativo inteiro ou para assemblies selecionados. Ou seja, pode desativar a diretiva para todos os assemblies que compõem o aplicativo ou ativá-lo para alguns módulos (assemblies), mas outros não. Para aplicar seletivamente a diretiva de editor para assemblies que compõem um aplicativo, defina < publisherPolicy apply = não / > e especifique quais módulos (assemblies) que você deseja que sejam afetados usando o <dependentAssembly> elemento. Para aplicar a diretiva de editor para todos os assemblies que compõem o aplicativo, defina < publisherPolicy apply = não / > com nenhum elemento assembly dependente. Para obter mais informações sobre configuração, consulte Arquivos de configuração.

Arquivo de configuração de máquina

Em terceiro lugar, o runtime examina o arquivo de configuração da máquina. Este arquivo, chamado Machine. config, reside no computador local no subdiretório Config do diretório raiz onde o runtime está instalado. Este arquivo pode ser usado por administradores para especificar as restrições de ligação de assembly locais no computador. As configurações no arquivo de configuração de máquina têm precedência sobre todas as outras definições de configuração; No entanto, isso não significa que todas as configurações devem ser colocadas neste arquivo. A versão determinada pelo arquivo de diretiva do administrador é final e não pode ser substituída. Substituições especificadas no arquivo Machine. config afetam todos os aplicativos. Para obter mais informações sobre arquivos de configuração, consulte Arquivos de configuração.

Consulte também

Conceitos

Como o Runtime Localiza Assemblies

Etapa 2: Verificando anteriormente Assemblies referenciados

Etapa 3: Verificando o Cache Global de assemblies

Etapa 4: Localizando que o Assembly através de bases de código ou investigação

Referências de Assembly parcial