Ferramenta de mesclagem do ASP.NET (Aspnet_merge.exe)
A ferramenta de mesclagem do ASP.NET (Aspnet_merge.exe) permite que você agrupar e gerenciar os assemblies que são criados pelo Ferramenta de compilação do ASP.NET (Aspnet_compiler.exe). A ferramenta de mesclagem do ASP.NET funciona em assemblies que foram criados usando o ASP.NET versão 2.0 ou posterior.
Você pode usar a ferramenta de compilação ASP.NET para pré-compilar um aplicativo para implantação. A ferramenta cria um assembly para cada pasta de conteúdo no destino Web site, ou cria uma montagem para cada arquivo de conteúdo. A ferramenta de mesclagem do ASP.NET oferece flexibilidade adicional para o gerenciamento de implantação e a versão. Ele permite que você faça o seguinte:
criar uma montagem para o site inteiro.
Criar um assembly para cada pasta do site da Web e adicionar um prefixo ao nome do assembly.
Crie um único assembly apenas do usuário do site da Web elementos de interface (UI), sistema autônomo páginas e controles.
aspnet_merge [-?]
applicationPath
[-keyfile filename [-delaysign]]
[-o assemblyname | -w assemblyname | -prefix prefix]
[-copyattrs [assemblyfile]]
[-debug]
[-nologo]
[-errorstack]
[-r]
[-xmldocs]
[-a]
[-logfile logfile]
[-allowattrs textfile]
Argumentos
Argumento |
Descrição |
---|---|
applicationPath |
(Obrigatório) Especifica o nome da pasta que contém o aplicativo que você deseja criar assemblies para. Esta é a operação de mesclagem padrão. Ele cria assemblies menos que o número gerado pelo compilador fixednames opção. |
Opções
Opção |
Descrição |
---|---|
-keyfile filename |
Especifica que o AssemblyKeyFileAttribute atributo deve ser aplicado ao assembly compilado. O atributo especifica o nome do arquivo que contém o emparelhar de chaves pública e privado usada para gerar um nome forte. Se os assemblies de entrada são assinados e a ferramenta de mesclagem não assina os assemblies, você receberá uma mensagem avisa que as chaves foram removidas. Se um nome de arquivo de chave não for especificado, a ferramenta de mesclagem falhará se um assembly tem uma chave pública e não a outro assembly. |
-delaysign |
Especifica que o AssemblyDelaySignAttribute atributo deve ser aplicado ao assembly gerado. Este atributo especifica que um assembly deve ser assinado somente com o token de chave pública em vez de com o emparelhar de chaves público e particular. Esta opção deve ser combinada com o -keyfile opção. Se o atributo já é aplicado ao conjunto de módulos (assembly) em arquivos de código, a ferramenta de mesclagem lançará uma exceção. Quando você usa o delaysign opção, se verificação de nome forte não estiver habilitada, o código produzido pela ferramenta de mesclagem pode executar antes o código é assinado. Se verificação de nome forte não estiver ativada, certifique-se de que o código não é vulnerável a ataques por usuários mal-intencionados durante o time antes de concluída a assinatura. |
-o assemblyname |
Especifica o nome de um assembly único e mesclado para todo o conteúdo de interface do usuário da Web e o nível superior assemblies. Todos os arquivos que têm a extensão .compiled são modificados para fazer referência ao assembly de único. (Arquivos com a extensão .compiled são compilados do conteúdo, sistema autônomo .aspx,. mestre e arquivos .ascx). Essa opção não pode ser combinada com o w ou prefix opções. The assemblyname parâmetro é obrigatório. |
-w assemblyname |
Especifica o nome de um assembly único e mesclado para todo o conteúdo de interface do usuário da Web (páginas e controles de usuário). Todos os arquivos .aspx,. mestre e .ascx compilados são modificados para fazer referência ao assembly de único. Isso lhe permite atualizar elementos da interface do usuário separadamente da atualização do código. Assemblies de alto nível para recursos locais e global não são mesclados. Essa opção não pode ser combinada com o o ou prefix opções. The assemblyname parâmetro é obrigatório. |
-prefix prefix |
Especifica um prefixo dos nomes de módulos (assemblies). O conjunto da pasta raiz possui somente o prefix parâmetro sistema autônomo o nome do assembly. Os assemblies subpasta têm o prefix parâmetro combinado com o nome da subpasta. Por exemplo, se uma subpasta é denominada Admin, o assembly resultante seria nomeado prefix. Admin.dll. Para Web sites que não podem ser atualizados, compilação ferramenta compila temas e recursos locais para separam os assemblies na pasta bin. Para Web sites que podem ser atualizados, temas e recursos locais não são compilados em assemblies na pasta bin. Em vez disso, elas são deixadas em suas pastas originais no aplicativo. Além disso, sites atualizável, a ferramenta de mesclagem modifica .aspx,. mestre e arquivos .ascx para apontar para o assembly de novo, mesclado para a pasta na qual residem os arquivos. Essa opção não pode ser combinada com o o ou w opções. The prefix parâmetro é obrigatório. |
-copyattrs assemblyfile |
Especifica que o assembly mesclada ou assemblies devem ser atribuídos sistema autônomo mesmos atributos do assembly o assembly especificado. If assemblyFile não for especificado, o assembly App_Code é usado, mesmo se o assembly de nível superior App_Code.dll não estiver incluído na saída mesclada. Se houver um atributo divergente entre um assembly a serem mesclados e o assemblyFile assembly, é gerado um erro. Use o a opção para ignorar a verificação de atributo divergente ou usar o allowattrs opção para especificar o atributo a ser excluído do cheque. Para atributos que não estão incluídos na verificação de consistência, consulte a descrição para o allowattrs opção em outro lugar na tabela. |
-debug |
Especifica que saída de depurar deve ser preservada no conjunto de módulos (assembly) mesclada. |
-nologo |
Suprime a mensagem de direitos autorais. |
-errorstack |
Especifica que a ferramenta deve incluir informações de rastreamento de pilha se ele falhar compilar o aplicativo. |
-r |
Remove os arquivos .compiled para o assembly de código principal (código na pasta App_Code). Não use essa opção se o seu aplicativo contém uma referência de tipo explícito para o assembly de código principal. |
-xmldocs |
Mescla arquivos de documentação XML que estão associados com os conjuntos de entrada. Um arquivo XML está incluído na pasta de Lixeira do site mescladas. |
-a |
Ferramenta de força a mesclar a assemblies de mesclagem que não têm nem todos os o AllowPartiallyTrustedCallersAttribute aplicado, ou que têm atributos divergente. The AllowPartiallyTrustedCallersAttribute permite acesso a um assembly de chamadores parcialmente confiável e é especificado durante a compilação pela ferramenta de compilação.
Observação importante:
Quando você usa o a opção, assemblies mesclados que não foram marcados anteriormente sistema autônomo permitir que chamadores parcialmente confiável são marcados com AllowPartiallyTrustedCallersAttribute. Isso pode resultar em permitindo código parcialmente confiável chamem o assembly.
|
-log logfile |
Grava mensagens de arquivo especificado. |
-allowattrs textfile |
Especifica um arquivo que contém atributos para excluir quando a ferramenta está verificando a consistência dos atributos em assemblies mesclados. Cada linha do arquivo pode ser o nome totalmente qualificado de um atributo ou um espaço para nome totalmente qualificado. Se um espaço para nome for especificado, todos os atributos encontrados nesse namespace será excluído. Cada atributo ou namespace deve estar em uma linha separada. Alguns atributos não são necessário ser especificado explicitamente. A ferramenta de mesclagem gera um aviso se ele encontra os seguintes atributos e continua o processamento. |
-? |
Exibe sintaxe de comando e opções para a ferramenta. |
Comentários
ASP.NET Web aplicativos podem ser compilados no lugar ou pré-eles podem ser compilados para implantação em um local de destino, sistema autônomo um servidor de produção. Compilar um aplicativo no local é chamado compilação dinâmica e é útil em cenários de desenvolvimento rápido. Pré-compilar um aplicativo para implantação pode ser executada em uma das seguintes maneiras:
Compilando e remover todos sistema autônomo arquivos de fonte, sistema autônomo arquivos code-behind e de marcação.
Compilando e os arquivos de marcação de retenção para que possam ser atualizados.
A ferramenta de mesclagem do ASP.NET fornece flexibilidade adicional quando você pré-compila o Web site além do que você pode obter com a ferramenta de compilação ASP.NET sozinha.
A ferramenta de mesclagem ASP.NET mescla a saída da ferramenta de compilação ASP.NET para produzir os assemblies. Esses assemblies mesclados podem melhorar o gerenciamento de liberação e implantação para grandes sites da Web. Você pode usar o ASP.NET mesclagem ferramenta de três maneiras:
mesclagem todas as saídas em um único assembly.
mesclagem Web UI conteúdo da cada pasta (páginas da Web, capas e assim por diante) em seu próprio assembly.
Mescle Web UI todo conteúdo no site em um único assembly.
As seções a seguir descrevem esses cenários. Para obter exemplos de usar a ferramenta de mesclagem do ASP.NET, consulte Gerenciar ASP.NET Precompiled saída para a implantação usando o comando aspnet_merge.exe no site do MSDN.
A ferramenta de mesclagem do ASP.NET é incluída no Projetos de implantação de Web do Visual Studio, um suplemento para Visual Studio que permite gerenciar configurações de compilação, especifique as tarefas de pré-compilação e pós-compilação e Mesclar módulos (assemblies). Para obter mais informações, consulte Usando projetos de implantação da Web com o Visual Studio 2005.
Grupos de assembly
A ferramenta de compilação cria módulos (assemblies) de maneira diferente dependendo do tipo do arquivo de fonte e da pasta. A saída da ferramenta de compilação pode ser classificada em dois grupos de assembly. A ferramenta de mesclagem mescla os grupos de duas assembly formas diferentes.
sistema autônomo grupos de duas assembly são:
Web UI conteúdos assemblies, que são gerados a partir da interface do usuário arquivos de conteúdo, sistema autônomo .aspx, .ascx,. mestre, .ashx, .capa e arquivos .resx local (na pasta App_LocalResources). Como esses assemblies são mesclados depende precompiled site é atualizável, que é determinado pelo u opção da ferramenta de compilação. Se um site compilado for atualizável, conteúdo de interface do usuário pode ser atualizado sem recompilar o site. Quando um Web site é atualizável, os arquivos de conteúdo permanecem em suas pastas originais e somente os arquivos de código associado são mesclados. Se o site não é atualizável, .ascx,. mestre e .capa arquivos de conteúdo serão removidos da pasta original. ASP.NET .aspx arquivos são substituídos com um arquivo de marcador que não possui conteúdo. Conteúdo de interface do usuário e código são mescladas neste caso.
Assemblies de alto nível, que são assemblies gerados a partir de pastas de aplicativo, sistema autônomo App_Code, App_GlobalResources, App_WebReferences. Assemblies de alto nível também são gerados para arquivos especiais, sistema autônomo global.asax. Assemblies de alto nível sempre são compilados na pasta bin do site da implantação. O site de implantação final não terá uma pasta App_Code, App_GlobalResources ou App_WebReferences, ou um arquivo global.asax. Em vez disso, o site de implantação final terá um ou mais módulos (assemblies) no diretório bin, dependendo das opções usadas com a ferramenta de mesclagem. Pastas definidas pelo usuário sempre são compiladas também, exceto pelo fato de que o site de implantação final mantém a pasta definida pelo usuário quando houver arquivos de conteúdo da interface do usuário nele. Para obter mais informações sobre pastas reservadas, consulte Layout de Site Web do ASP.NET.
Conteúdo estático, sistema autônomo arquivos com extensões de nome de arquivo sistema autônomo, por exemplo, .css, .gif, .htm, .html, .jpg, .js, são deixados em seus locais na estrutura do diretório pré-compilado. A ferramenta de mesclagem não mover ou modificá-los.
mesclagem cenários e compilação
Com o ASP.NET 2.0, você pode usar uma combinação de compilação dinâmica, pré-compilação com a ferramenta de compilação e mesclar com a ferramenta de mesclagem para atender a sua implantação e metas de gerenciamento de versão. A tabela a seguir lista diferentes de compilação e cenários de mesclagem e realça quando a ferramenta de mesclagem deve ser usada.
Cenário |
Anotações |
---|---|
Compilação dinâmica (não há pré-compilação) |
A compilação dinâmica é útil em cenários de desenvolvimento rápido. Visual Studio usa compilação dinâmica — quando você pressiona F5 ou CTRL + F5, somente a página você está trabalhando e suas dependências são compiladas dinamicamente. Isso evita uma compilar de site da Web completa. Para obter mais informações, consulte Understanding ASP.NET Dynamic Compilation. |
Pré-compilar para criar um único assembly para cada arquivo de conteúdo de interface do usuário da Web usando Aspnet_compiler.exe com o fixednames opção. |
Quando você precompilar com o fixednames opção, você pode fazer atualizações incrementais em unidades tão pequeno quanto páginas individuais e reimplantar somente sistema autônomo páginas alteradas. Você pode criar sites pré-compilados atualizáveis e não atualizáveis, usando o u a opção com o fixednames opção. The fixednames opção não afeta como mesclar assemblies posteriormente usando a ferramenta de mesclagem. Para um site grande, o grande número de módulos (assemblies) criada pelo fixednames opção pode causar problemas com o gerenciamento de liberação ou implantação. Para obter mais informações, consulte ASP.NET Compilation ferramenta (Aspnet_compiler.exe). |
mesclagem para criar um assembly para cada pasta de conteúdo de interface do usuário da Web usando Aspnet_merge.exe com o prefix opção. |
Nesse cenário, você pode controlar os assemblies no nível da pasta de conteúdo da interface do usuário. Esse cenário é como omitindo o fixenames opção ao usar a ferramenta de compilação. A diferença é que a ferramenta de mesclagem oferece mais controle sobre os nomes dos assemblies finais que são derivados da pasta raiz e de pastas de conteúdo definida pelo usuário. Assemblies de alto nível e conteúdo estático não são afetados. Uma desvantagem potencial desse cenário é que se um arquivo em uma pasta for alterado, você deve reimplantar o assembly de pasta e a página modificada. Você pode mesclagem atualizáveis e não atualizáveis sites pré-compilados usando o prefix opção. Esse cenário é o cenário padrão se você executar a ferramenta de mesclagem sem opções. |
mesclagem para criar um único assembly para todos os arquivos de conteúdo do interface do usuário da Web usando Aspnet_merge.exe com o w opção. |
Nesse cenário, todo o conteúdo da interface do usuário é mesclado em um assembly de nome que você especificar na assemblyname parâmetro. Isso reduz o número total de módulos (assemblies) no site implantado final. No entanto, também é necessário reimplantar o assembly conteúdo UI se conteúdo qualquer arquivo de alterações. Assemblies de alto nível e conteúdo estático não são afetados. |
Mesclagem para criar um único assembly para todo o Web site usando Aspnet_merge.exe com o o opção. |
Nesse cenário, o site implantado final contém apenas um assembly de nome que você especificar na assemblyname parâmetro. Um único assembly simplifica a implantar do site. No entanto, isso significa que se qualquer conteúdo em qualquer lugar no site é alterado, você deverá re-criar e reimplantar o assembly do site. Assemblies de alto nível (App_Code, App_GlobalResources e App_WebReferences) são afetados porque elas são incluídas no conjunto de módulos (assembly) único. Conteúdo estático não é afetado. |
Mesclagem de um aplicativo para implantação
Mesclar os assemblies para um site executando a ferramenta de mesclagem e especificar o local do site pré-compilado com o applicationPath parâmetro. A ferramenta de mesclagem ASP.NET mescla um site pré-compilado no lugar. Em outras palavras, ele não cria uma nova cópia mesclada de site pré-compilado. The applicationPath parâmetro pode ser o local final para aplicativo Web Web. sistema autônomo alternativa, o aplicativo compilado pode ser ainda mais implantado, sistema autônomo, copiando o diretório.
Quando a ferramenta de mesclagem mescla um site pré-compilado, ele preserva o local dos arquivos dinâmicos em que aparecem na etapa pré-compilada. A única alteração que faz a ferramenta de mesclagem para o conteúdo de arquivos dinâmicos é alterar @ página, @ Controle, and @ mestre diretivas. Certifica-se de que arquivos com essas diretivas herdam corretamente mescladas assembly na pasta bin. Para obter detalhes sobre como a ferramenta de compilação trata tipos de arquivos, consulte a seção "Comentários"ASP.NET Compilation ferramenta (Aspnet_compiler.exe)
Para assemblies que são derivados de pastas definidas pelo usuário (incluindo a pasta raiz do site), algumas opções de mesclagem podem criar nomes diferentes das que aparecem no site pré-compilado. Por exemplo, a tabela a seguir mostra os nomes assembly mescladas quando nenhuma opção é usadas com a ferramenta de mesclagem. O nome do assembly para cada pasta definida pelo usuário é App_Web_ nnnn.dll, em que nnnn é um valor de hash gerado internamente.
Pasta no site pré-compilado |
Nome do assembly mesclado usando opções sem Aspnet_merge.exe |
---|---|
\ |
raiz.dll |
Admin |
Admin.dll |
A tabela a seguir mostra os nomes assembly mescladas quando você usa o prefix opção e o NewName parâmetro.
Pasta no site pré-compilado |
Nome do assembly mescladas usando a opção Aspnet_merge.exe prefixo |
---|---|
\ |
NewName.dll |
Admin |
NewName. Admin.dll |
Temas são tratados de maneira diferente em um site mesclado que não é atualizável. O site não mesclado pré-compilado, há um assembly separado para cada tema. Cada assembly chamado App_Theme_ ThemeName.dll. O site mesclado, há um assembly chamado tema.dll. Se o site pré-compilado for atualizável, não há nenhum assemblies com base em temas na pasta bin mesclada.
Solução de problemas do processo de mesclagem
Enquanto um site da Web está sendo compilado ou mesclado, o caminho de um assembly pode se tornar maior que o comprimento máximo permitido para um caminho de arquivo no Microsoft Windows. Nesse caso, quando você solicita um recurso do assembly mesclado, um HttpException erro é lançado indicando que o recurso não foi pré-compilado e não pode ser solicitado.
O comprimento do caminho máximo do arquivo no Microsoft Windows é de 260 caracteres. Se o caminho de um assembly exceder esse limite, você deve tanto encurtar o caminho do site da Web ou de suas subpastas. Talvez também seja necessário desabilitar sombra copiando no arquivo Web.config usando o ShadowCopyBinAssemblies propriedade das hostingEnvironment elemento. Para obter mais informações sobre nomes de arquivos, consulte Nomeação de um arquivo no MSDN Web site.
Quando você usar a ferramenta de mesclagem com o o opção para criar um único assembly para o site, um erro ocorrerá se o processo de mesclagem cria referências circulares. Há duas soluções alternativas para essa situação:
Use o w opção em vez disso, para que o arquivo de fonte que contém a referência circular permanece uma referência externa e não mescladas.
Separe os controles que estão envolvidos em uma referência circular em pastas diferentes.
Quando você mescla os assemblies que têm atributos divergente, use as diretrizes a seguir para certificar-se de que a operação de mesclagem for bem-sucedida:
Lista de atributos divergente, usando o allowattrs opção.
Use o copyattrs Opções e certifique-se de que todos os assemblies sejam mescladas tenham correspondência atributos.
Use o a opção.
Assinando conjuntos de módulos (assemblies)
The delaysign e keyfile opções permitem que você use a ferramenta de mesclagem para criar assemblies fortemente nomeados sem usar o Ferramenta nome forte (Sn.exe). The delaysign opções corresponde do AssemblyDelaySignAttribute atributo e o keyfile opção corresponde do AssemblyKeyFileAttribute atributo.
Cada opção se aplica o atributo correspondente ao conjunto de módulos (assembly) mesclada. Os atributos que está sendo aplicados são marcados com um AttributeUsageAttribute o atributo cujo AllowMultiple propriedade estiver definida como false. Portanto, se você usar essas opções quando você mescla os assemblies que já estão marcados com um dos atributos, mesclando falhará.
Exemplos
O comando a seguir mescla os assemblies do site pré-compilado no diretório C:\PrecompiledSite.
Aspnet_merge C:\PrecompiledSite
O comando a seguir mescla módulos (assemblies) de um site pré-compilado no diretório C:\PrecompiledSite e assina os módulos mesclados usando o arquivo KeyFile.snk. O site mesclado terá uma montagem para cada pasta do site pré-compilado.
Aspnet_merge C:\PrecompiledSite -keyfile KeyFile.snk
O comando a seguir mescla todos os assemblies do site no diretório C:\PrecompiledSite pré-compilado em um único assembly e nomeia o assembly resultante MyApp.dll. O site mesclado terão um assembly para todos os site UI conteúda.
Aspnet_merge C:\PrecompiledSite -w MyApp.dll
O comando a seguir mescla todos os assemblies do site no diretório C:\PrecompiledSite pré-compilado em um único assembly e nomeia o assembly resultante MyApp.dll.
Aspnet_merge C:\PrecompiledSite -o MyApp.dll
Consulte também
Conceitos
Atraso na Assinatura de um Assembly
Referência
AllowPartiallyTrustedCallersAttribute