Arquivos de configuração de aplicativo

Um arquivo de configuração de aplicativo é um arquivo XML usado para controlar a associação de assembly. Ele pode redirecionar um aplicativo do uso de uma versão de um assembly lado a lado para outra versão do mesmo assembly. Isso é chamado de configuração por aplicativo. Um arquivo de configuração de aplicativo se aplica apenas a um manifesto de aplicativo específico e assemblies dependentes. Componentes isolados compilados com um manifesto de ISOLATIONAWARE_MANIFEST_RESOURCE_ID inserido exigem um arquivo de configuração de aplicativo separado. Os manifestos gerenciados com CreateActCtx exigem um arquivo de configuração de aplicativo separado.

O redirecionamento especificado por um arquivo de configuração de aplicativo pode substituir as versões de assembly especificadas por manifestos de aplicativo e arquivos de configuração do editor. Por exemplo, se um arquivo de configuração do editor especificar que todas as referências a um assembly serão redirecionadas da versão 1.0.0.0 para 1.1.0.0, um arquivo de configuração de aplicativo poderá ser usado para redirecionar um aplicativo específico para usar a versão 1.0.0.0. Um arquivo de configuração de aplicativo se aplica somente ao manifesto do aplicativo especificado e aos assemblies dependentes.

Para obter uma listagem completa do esquema XML, consulte Esquema de arquivo de configuração de aplicativo.

Os arquivos de configuração do aplicativo têm os elementos e atributos mostrados na tabela a seguir.

Elemento Atributos Obrigatório
configuração Sim
windows Yes
publisherPolicy Sim
apply Sim
Runtime Não
assemblyBinding Sim
Sondagem Não
Privatepath Sim
Dependência Não
dependentAssembly Sim
assemblyIdentity Sim
tipo Sim
name Sim
linguagem Não
Processorarchitecture Sim
version Sim
publicKeyToken Não
bindingRedirect Sim
oldVersion Sim
newVersion Sim

Localização do arquivo

Os arquivos de configuração do aplicativo devem ser instalados no mesmo local que o manifesto do aplicativo.

Sintaxe de nome de arquivo

O nome de um arquivo de configuração de aplicativo é o nome do executável do aplicativo seguido por .config.

Por exemplo, um arquivo de configuração de aplicativo que se refere a Example.exe ou Example.dll usaria a sintaxe de nome de arquivo mostrada no exemplo a seguir. Você pode omitir o campo da <ID> do recurso se estiver instalando o arquivo de configuração como um arquivo separado ou se a ID do recurso for 1.

example.exe.<ID do> recurso.config

example.dll.<ID do> recurso.config

Elementos

Os nomes de elementos e atributos diferenciam maiúsculas de minúsculas. Os valores de elementos e atributos não diferenciam maiúsculas de minúsculas, exceto pelo valor do atributo de tipo.

configuração

Um elemento de contêiner para os elementos windows e runtime de um arquivo de configuração de aplicativo. Obrigatórios.

windows

Inclui as partes do arquivo de configuração de aplicativo que se aplicam ao redirecionamento de assemblies Win32.

Observação

O autor de um aplicativo não deve incluir um arquivo de configuração com um subelemento do Windows como parte de seu aplicativo. Isso poderá ser permitido se a única finalidade do arquivo de configuração for habilitar a funcionalidade privatePath de um elemento de investigação . O elemento de investigação não está disponível em sistemas anteriores ao Windows Server 2008 R2 e Windows 7.

publisherPolicy

Especifica se a política do editor deve ser aplicada.

Esse elemento tem os atributos mostrados na tabela a seguir.

Atributo Descrição
apply Um valor de "sim" aplica a política do editor. Essa é a configuração padrão. O valor "não" não aplica a política do editor.

runtime

Inclui as partes do arquivo de configuração do aplicativo que se aplicam ao redirecionamento de assemblies .Net.

assemblyBinding

Inclui as informações de redirecionamento para o aplicativo e o assembly afetado por esse arquivo de configuração de aplicativo. O primeiro subelemento de assemblyBinding deve ser uma assemblyIdentity que identifique o aplicativo.

A partir do Windows Server 2008 R2 e do Windows 7, um elemento assemblyBinding pode incluir um subelemento de investigação .

Sondagem

Um subelemento opcional de um elemento assemblyBinding que estende a pesquisa de assemblies para diretórios adicionais. Os diretórios adicionais não precisam ser subdiretórios do diretório do assembly.

Observação

Esse elemento não está disponível em sistemas anteriores ao Windows Server 2008 R2 e Windows 7 e só pode ser usado em um elemento windows .

Esse elemento tem os atributos mostrados na tabela a seguir.

Atributo Descrição
Privatepath Especifica os caminhos relativos de subdiretórios do diretório base do aplicativo que podem conter assemblies. No máximo nove caminhos de subdiretório podem ser especificados. Delimita cada caminho de subdiretório com um ponto e vírgula.

Você pode usar o especificador especial de pontos duplos em um caminho para denotar o diretório pai do diretório atual. Não mais do que dois níveis acima do diretório atual podem ser especificados usando ponto duplo. Não use três ponto. Por exemplo, um aplicativo que usa o seguinte elemento de investigação verifica diretórios adicionais para um assembly.

<probing privatePath="bin;..\bin2\subbin;bin3"/>

dependência

Um elemento de contêiner para pelo menos um dependentAssembly. Cada dependentAssembly pode estar dentro de exatamente uma dependência. Esse elemento não tem atributos. Opcional.

dependentAssembly

O primeiro subelemento deve ser um elemento assemblyIdentity que identifica o assembly lado a lado que está sendo redirecionado pelo arquivo de configuração do aplicativo. Um dependentAssembly não tem atributos.

assemblyIdentity

Como o primeiro subelemento de um elemento assemblyBinding , assemblyIdentity descreve e identifica exclusivamente um aplicativo. O arquivo de configuração do aplicativo redireciona a associação desse aplicativo para assemblies lado a lado. Por exemplo, o assemblyIdentity a seguir indica que o arquivo de configuração do aplicativo afeta a associação do aplicativo mysampleApp a assemblies lado a lado. Os assemblies que estão sendo redirecionados seriam identificados em um dependentAssembly.

<assemblyIdentity processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>

Como o primeiro subelemento de um elemento dependentAssembly , assemblyIdentity descreve um assembly lado a lado do qual o aplicativo depende. O arquivo de configuração do aplicativo reconfigura a identidade desse assembly necessário. Por exemplo, o assemblyIdentity e bindingRedirect a seguir reconfigura uma dependência em Microsoft.Windows.SampleAssembly da versão 2.0.0.0 para a versão 2.1.0.0.

<dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32"
          name="Microsoft.Windows.SampleAssembly"
          processorArchitecture="x86"
          publicKeyToken="0000000000000000"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
</dependency>

Observe que cada assemblyIdentity incluído em um dependentAssembly deve corresponder exatamente à assemblyIdentity no manifesto do assembly.

O elemento assemblyIdentity tem os seguintes atributos. Ele não tem subelementos.

Atributo Descrição
tipo O valor deve ser win32 (maiúsculas e minúsculas). Obrigatórios.
name O atributo name identifica o aplicativo que está sendo afetado pelo arquivo de configuração do aplicativo ou pelo assembly que está sendo redirecionado. Use o seguinte formato para o nome: Organization.Division.Name. Obrigatórios. Por exemplo: Microsoft.Windows.MysampleApp ou Microsoft.Windows.MysampleAsm.
linguagem Identifica o idioma. Opcional. Para um assemblyIdentity que se refere a um assembly, se o assembly for específico do idioma, especifique o código de linguagem DHTML. Se o assembly for para uso mundial (idioma neutro) defina o valor como "*".
Processorarchitecture Especifica o processador que executa o aplicativo.
version Especifica a versão do aplicativo ou assembly. Use a sintaxe de versão de quatro partes: mmmm.nnnn.oooo.pppp. Obrigatórios.
publicKeyToken Para uma assemblyIdentity que se refere a um assembly, uma cadeia de caracteres hexadecimal de 16 caracteres que representa os últimos 8 bytes do hash SHA-1 da chave pública sob a qual o assembly é assinado. A chave pública usada para assinar o catálogo deve ter 2.048 bits ou mais. Necessário para todos os assemblies lado a lado compartilhados.

bindingRedirect

O elemento bindingRedirect contém informações de redirecionamento para a associação do assembly. Cada bindingRedirect deve ser incluído em exatamente um dependentAssembly. A sintaxe de versão de quatro partes da nova versão e a versão antiga devem especificar as mesmas versões principais e secundárias.

Esse elemento tem os atributos mostrados na tabela a seguir.

Atributo Descrição
oldVersion Especifica a versão do assembly que está sendo substituída e redirecionada. Use a sintaxe de versão de quatro partes nnnnn.nnnnn.nnnnn.nnnnn.nnnnn. Especifique um intervalo de versões por um traço sem espaços. Por exemplo, 2.14.3.0 ou 2.14.3.0 2.16.0.0. Obrigatórios.
newVersion Especifica a versão do assembly de substituição. Use a sintaxe de versão de quatro partes nnnnn.nnnnn.nnnnn.nnnnn.

Comentários

Os arquivos de configuração do aplicativo não especificam arquivos.

Exemplo

<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.10.0"/>
<bindingRedirect oldVersion="1.0.50.2011-1.0.60.65535" newVersion="1.0.70.0"/>