Compartilhar via


Ferramenta de compilação do ASP.NET (Aspnet_compiler.exe)

The ASP.NET Compilation tool (Aspnet_compiler.exe) enables you to compile an ASP.NET Web application, either in place or for deployment to a target location such as a production server. In-place compilation helps application performance because end users do not encounter a delay on the first request to the application while the application is compiled. Compilação para implantação pode ser executada em uma das duas maneiras: Remove todos os arquivos de fonte , como, por exemplo,-de code-behind e arquivos de marcação , ou que mantém os arquivos de marcação .

Dica

Para obter informações sobre como localizar a versão correta de Aspnet_compiler. exe, consulte Finding the Correct Version of Aspnet_compiler.exe posteriormente neste tópico.

aspnet_compiler  [-?]
                 [-m metabasePath | -v virtualPath [-p physicalPath]]
                 [[-u] [-f] [-d] [-fixednames] targetDir]
                 [-c]
                 [-errorstack]
                 [-nologo]
                 [[-keyfile file | -keycontainer container ] [-aptca] [-delaysign]]

Options

Option

Description

-m metabasePath

Especifica o caminho completo da metabase do IIS do aplicativo para ser compilado. A metabase do IIS é um armazenamento de informações hierárquicas que é usado para configurar o IIS. Por exemplo, o caminho da metabase para o site da Web do IIS padrão é LM/W3SVC/1/ROOT.

Esta opção não pode ser combinada com o -v ou -p Opções.

-v virtualPath

Especifica o caminho virtual do aplicativo para ser compilado.

Se -p também for especificado, o valor do que o acompanha physicalPath parâmetro é usado para localizar o aplicativo para ser compilado. Caso contrário, a metabase do IIS é usado, e a ferramenta pressupõe que os arquivos de fonte estão localizados no site da Web padrão (especificado no nó de metabase do LM/W3SVC/1/ROOT).

Esta opção não pode ser combinada com o -m opção.

-p physicalPath

Especifica o caminho completo de rede ou o caminho de disco local do diretório raiz que contém o aplicativo a ser compilado. Se -p não for especificado, a metabase do IIS é usado para localizar o diretório.

Esta opção deve ser combinada com o -v opção e não pode ser combinado com o -m opção.

-u

Especifica que o Aspnet_compiler. exe deve criar um aplicativo pré-compilado que permite atualizações subseqüentes do conteúdo, como páginas. aspx.

Se esta opção for omitida, o aplicativo resultante contém apenas os arquivos compilados e não pode ser atualizado no servidor de implantação . Você pode atualização o aplicativo apenas alterando os arquivos demarcação de fontee recompilar.

O targetDir parâmetro deve ser incluído.

Quando você usar esta opção, blocos de código em arquivos. aspx (ou seja, o código localizado em script elementos ou entre <% e %> marcas) não são compilados. Portanto, se houver erros de compilar em um desses blocos de código, você verá o erro somente em tempo de execução, porque o arquivo. aspx só então totalmente é compilado. Não é geralmente seguro para usar esta opção para um site que se baseia em blocos de código em arquivos. aspx.

-f

Especifica que a ferramenta deve substituir arquivos existentes do targetDir o diretório e subdiretórios.

-d

Overrides settings defined in the application's source configuration files to force debug information to be included in the compiled application. Otherwise, no debug output is emitted.

Não é possível usar o -d opção de compilação do local de-; no lugar de-a compilação homenageia as definições de configuração para opções de depuração .

targetDir

O caminho de rede ou o caminho do disco local para o diretório raiz que conterá o aplicativocompilado. Se a targetDir parâmetro não está incluído, o aplicativo é compilado no lugar.

-c

Especifica que o aplicativo a ser compilado deve ser totalmente recriado. Componentes que já foram compilados são compilados novamente. Se esta opção for omitida, a ferramenta baseia-se somente as partes do aplicativo que foram modificadas desde a compilação foi executou pela última vez.

-errorstack

Especifica que a ferramenta deve incluir informações de rastreamento de pilha se ele falhar para compilar o aplicativo.

-keyfile file

Especifica que o AssemblyKeyFileAttribute, que indica o nome do arquivo que contém o par de public/private chave é usado para gerar um nome forte, deve ser aplicado ao assemblycompilado.

Esta opção deve ser combinada com o -aptca opção. Se o atributo já é aplicado ao assembly em arquivos de código, Aspnet_compiler. exe lança uma exceção.

-keycontainer container

Especifica que o AssemblyKeyNameAttribute, que indica o nome do contêiner para o par de public/private chave é usado para gerar um nome forte, deve ser aplicado ao assemblycompilado.

Esta opção deve ser combinada com o -aptca opção. Se o atributo já é aplicado ao assembly em arquivos de código, Aspnet_compiler. exe lança uma exceção.

-aptca

Especifica que o AllowPartiallyTrustedCallersAttribute, que permite chamadores de parcialmente confiável acesso a um assembly, deve ser aplicado ao assembly fortemente nomeado que Aspnet_compiler. exe gera.

Esta opção deve ser combinada com o -keyfile ou -keycontainer opção. Se o atributo já é aplicado ao assembly em arquivos de código, Aspnet_compiler. exe lança uma exceção.

-delaysign

Especifica que o AssemblyDelaySignAttribute, que indica que um assembly deve ser assinado somente com o token de chave de pública, em vez de fazê-lo com o par de pública/particular chave deve ser aplicado ao assemblygerado.

Esta opção deve ser combinada com o -keyfile ou -keycontainer opção. Se o atributo já é aplicado ao assembly em arquivos de código, Aspnet_compiler. exe lança uma exceção.

Quando você usa o -delaysign opção, o código produzido pelo Aspnet_compilier.exe pode ser executada antes do código é assinado. Certifique-se de que o código não é vulnerável a usuários mal-intencionados antes que a assinatura seja concluída.

-fixednames

Especifica que um assembly deve ser gerado para cada página no aplicativo. Cada assembly é nomeado com o caminho virtual da página original, a menos que o nome excede o limite de sistema operacional para nomes de arquivo, caso um hash é gerado e usado para o nome do assembly.

Não é possível usar o -fixednames opção de compilação do local de-; no lugar de-a compilação homenageia as definições de configuração para o modo de compilação em lotes.

-nologo

Suprime a mensagem de direitos autorais .

-?

Displays command syntax and options for the tool.

Comentários

Existem duas versões do ASP.NET ferramenta de compilação:

  • A versão que é fornecido com o .NET Framework 2.0. Use esta versão para aplicativos Web que são implantados em pools de aplicativo que estão associados a .NET Framework 2.0 CLR. Os aplicativos Web podem destino o .NET Framework 2.0, o .NET Framework 3.0, ou o .NET Framework 3.5.

  • A versão que é fornecido com o .NET Framework 4. Use esta versão para aplicativos Web que são implantados em pools de aplicativo que estão associados a .NET Framework 4 CLR. Os aplicativos Web podem destino o .NET Framework 2.0, o .NET Framework 3.0, o .NET Framework 3.5, ou o .NET Framework 4. Quando esta versão é usado para Web sites de destino a .NET Framework 2.0, o .NET Framework 3.0, ou o .NET Framework 3.5, ele fornece melhor erro reporting em comparação com o .NET Framework 2.0 versão.

Para obter mais informações sobre como desenvolver, compilare implantarsitesWeb que versões específicas de destino do.NET Framework, consulte .NET Framework multiplataforma para projetos da Web do ASP.NET e Visão geral da execução lado a lado do ASP.NET. Para obter informações sobre como o ASP.NET ferramenta de compilação determina qual versão do.NET Framework um destinos de site da Web , consulte a BuildManager.TargetFramework propriedade.

ASP\ de ASP.NET ferramenta de compilação pode ser usada de duas maneiras gerais: para no lugar de-a compilação e compilação para implantação, onde o diretório de saída de destino é especificado. As seções a seguir descrevem esses cenários.

Compilar um aplicativo no local

ASP\ de ASP.NET compilação ferramenta pode compilar um aplicativo no local, ou seja, imita o comportamento de fazer várias solicitações para o aplicativo, fazendo com que a compilação regular. Usuários de um site pré-compilado não terão um atraso causado por compilar a página na primeira solicitação.

Observe que se você estiver usando uma conta representada, a conta e a conta de logon do usuário devem ter acesso de gravação para o destino de pré-compilação seja bem-sucedida.

Quando você pré-compila um site in-loco, os itens seguintes aplicar:

  • O site mantém seus arquivos e a estruturade diretório.

  • Você deve ter compiladores para todas as linguagens de programação usadas pelo site no servidor.

  • Se qualquer arquivo falhar a compilação, o site inteiro falhará a compilação.

Você também pode recompilar um aplicativo no local depois de adicionar novos arquivos de fonte . A ferramenta compila somente os arquivos novos ou alterados, a menos que você incluir o -c opção.

Dica

Compilação de um aplicativo que contém um aplicativo de aninhada faz não compilar o aplicativode aninhados.O aplicativo de aninhado deve ser compilado separadamente.

Dica

Quando os compilação compilar umaplicativo de Webque inclui páginas mestras, pode falhar se você compilar o aplicativo como um site atualizável e um conflito ocorre. O conflito pode ocorrer se o nome da página mestra corresponde ao nome do namespace para uma página de conteúdo que deriva da página mestra.(Relação de herança é estabelecida pela Inheritsoatributo da @ Página diretiva).Para contornar esse problema, você pode alterar o nome da classe da página mestra ou alterar o nome do namespace ou você pode compilar o aplicativo como não-atualizável.

Dica

Se você usar o .NET Framework 4versão da ferramenta para pré-compilar um site Web no local, e se o site destina-se a uma versão anterior do.NET Framework e está associado um pool de aplicativo que se destina a .NET Framework 2.0oCLR, a primeira solicitação para oaplicativo de Webfará com que a compilação dinâmica como se o site não tinha sido pré-compilados. Isso ocorre porque o compilador delinha de comando - compila em .NET Framework 4 pastas temporárias que não são reconhecidas pelo .NET Framework 2.0 CLR.

Compilando um aplicativo para implantação

compilar um aplicativo para implantação (compilação para um local de destino ), especificando a targetDirparâmetro. O targetDir pode ser o local final para oaplicativode Webou aplicativo compilado pode ser ainda mais implantada.

Usando o -u opção compila o aplicativo de tal forma que você pode fazer alterações em certos arquivos no aplicativo compilado sem recompilar o proprietário. Aspnet_compiler. exe faz uma distinção entre estático e tipos de arquivos dinâmico e trata-los de maneira diferente ao criar o aplicativoresultante.

Tipos de arquivos estáticos são aqueles que não têm um compilador associado ou criar um provedor, como, por exemplo, arquivos cujos nomes têm extensões como. css,. gif,. htm,. HTML,. jpg,. js e assim por diante. Simplesmente, esses arquivos são copiados para o local de destino , com suas casas relativos na estrutura do diretório preservados.

Tipos de arquivo dinâmicos são aqueles que têm um compilador associado ou criar provedor, incluindo arquivos de ASP.NET-extensões de nome de arquivo específico como, por exemplo,. asax,. ascx,. ashx,. aspx,. browser,. master e assim por diante. ASP\ de ASP.NET ferramenta de compilação gera assemblies desses arquivos. Se a -u opção for omitida, a ferramenta também cria arquivos com a extensão de nome de arquivo.COMPILADO nesse mapa arquivos de fonte original ao seu assembly. Para garantir que a estrutura do diretório de aplicativofonte é preservado, a ferramenta gera o arquivos do espaço reservado nos locais correspondentes noaplicativode destino.

Você deve usar o -u opção para indicar que o conteúdo do aplicativo compilado pode ser modificado. Caso contrário, as modificações subseqüentes são ignoradas ou causam erros em tempo de execução-.

A tabela a seguir descreve como o ASP.NET tipos de arquivo diferente de alças de ferramenta de compilação quando o -u opção está incluída.

File type

Ação do compilador

. ascx,. aspx,. master

Esses arquivos são divididos em marcação e código fonte , que inclui o código de-por trás de arquivos. Código-fonte é compilado em conjuntos de módulos com nomes que são derivados de um algoritmode hash, e os assemblies são colocados no diretório Bin. Qualquer código embutido , que é, o código incluído em <script runat="server"> elementos, está incluído com marcação e não compilado. Arquivos deNovo com o mesmo nome que os arquivos de fonte são criados para conter a marcação e colocados nos diretórios de saída correspondente.

. ashx,. asmx

Esses arquivos não são compilados e são movidos para os diretórios de saída, como é e não compilado. Se você deseja ter o código de manipulador compilado, coloque o código em arquivos de código fonte no diretório App_Code.

. cs,. vb,. jsl,. cpp

(não incluindo-de código por trás de arquivos para tipos de arquivo listados anteriormente)

Esses arquivos são compilados e incluídos como um recurso em assemblies que fazem referência a eles. Arquivos de origem não são copiados para o diretório de saída. Se um arquivo de código não é referenciado, ele não é compilado.

Tipos de arquivoPersonalizar

Esses arquivos não são compilados. Esses arquivos são copiados para os diretórios de saída correspondente.

Arquivos de código-fonte na subpasta App_Code

Esses arquivos são compilados em assemblies e colocados no diretório Bin.

ObservaçãoObservação
Tipos de arquivo estático no diretório App_Code não são copiados para os diretórios de saída.

. resx e.arquivos derecurso no subdiretório App_GlobalResources

Esses arquivos são compilados em assemblies e colocados no diretório Bin. Não Subdiretório App_GlobalResources é criado sob o diretório de saída principal, e nenhum arquivo. resx ou. Resources, localizado no diretório de fonte é copiado para os diretórios de saída.

ObservaçãoObservação
Os arquivos de recurso no subdiretório App_GlobalResources são compilados em assemblies antes que o código no subdiretório App_Code é compilado.Modificação dos arquivos de recurso após a compilação não é suportada.

. resx e.arquivos derecurso no subdiretório App_LocalResources

Esses arquivos não são compilados e são copiados para os diretórios de saída correspondente.

.arquivos decapa no subdiretório App_Themes

A.arquivos decapa e arquivos detema estáticonão são compilados e são copiados para os diretórios de saída correspondente.

.browser

Web.config

Tipos de arquivo estático

Módulos (assemblies) já está presente no diretório Bin

Esses arquivos são copiados para os diretórios de saída.

A tabela a seguir descreve como o ASP.NET tipos de arquivo diferente de alças de ferramenta de compilação quando o -u opção for omitida.

Dica

Os avisosNão são fornecidos para impedir a modificação do código de fonte de um aplicativode compilado.

File type

Ação do compilador

. aspx,. asmx,. ashx,. master

Esses arquivos são divididos em marcação e código fonte , que inclui-de código por trás de arquivos e de qualquer código que está incluído em <script runat="server"> elementos. Código-fonte é compilado em conjuntos de módulos com nomes que são derivados de um algoritmode hash. Os assemblies resultantes são colocados no diretório Bin. Qualquer código embutido , que é, o código entre o <% e %> colchetes, está incluído com marcação e não compilado. O compilador cria novos arquivos para conter a marcação com o mesmo nome que os arquivos de fonte . Esses arquivos resultantes são colocados no diretório Bin. O compilador também cria arquivos com o mesmo nome que os arquivos de fonte , mas com a extensão .COMPILED que contêm informações de mapeamento . A.Arquivos COMPILADOS são colocados nos diretórios de saída correspondente ao local original dos arquivos de fonte .

.ascx

Esses arquivos são divididos em marcação e código fonte . Código-fonte é compilado em assemblies e colocado no diretório Bin, com nomes que são derivados de um algoritmode hash. Nãoarquivos demarcação são gerados.

. cs,. vb,. jsl,. cpp

(não incluindo-de código por trás de arquivos para tipos de arquivo listados anteriormente)

Código-fonte que é referenciado por assemblies gerados a partir de arquivos. aspx,. ashx ou. ascx é compilado em assemblies e colocado no diretório Bin. Nãoos arquivos defonte são copiados.

Tipos de arquivoPersonalizar

Esses arquivos são compilados como arquivos dinâmicos. Dependendo do tipo de arquivo que se baseiam, o compilador pode colocar os arquivos de mapeamento nos diretórios de saída.

Arquivos no subdiretório App_Code

Arquivos de código-fonte nesse subdiretório são compilados em assemblies e colocados no diretório Bin.

ObservaçãoObservação
Tipos de arquivo estático no diretório App_Code não são copiados para os diretórios de saída.

Arquivos no subdiretório App_GlobalResources

Esses arquivos são compilados em assemblies e colocados no diretório Bin. Não Subdiretório App_GlobalResources é criado sob o diretório de saída principal. Se o arquivo de configuração especifica appliesTo="All", os arquivos. resx e. Resources são copiados para os diretórios de saída. Não são copiados se eles são referenciados por uma BuildProvider.

. resx e.arquivos derecurso no subdiretório App_LocalResources

Esses arquivos são compilados em assemblies com nomes exclusivos e colocados no diretório Bin. . Resx deNão ou.arquivos derecurso são copiados para os diretórios de saída.

.arquivos decapa no subdiretório App_Themes

Temas são compilados em assemblies e colocados no diretório Bin. Arquivos de stub são criados para.arquivos decapa e colocado no diretório de saída correspondente. Arquivos estáticos (como. CSS) são copiados para os diretórios de saída.

.browser

Web.config

Tipos de arquivo estático

Módulos (assemblies) já está presente no diretório Bin

Esses arquivos são copiados para o diretório de saída.

Nomes de Assembly fixos

Alguns cenários, tais como implantar umaplicativo de Webusando o MSI Windows Installer, exigem o uso de nomes de arquivo consistente e conteúdo, bem como estruturas de diretório consistentes para identificar os assemblies ou definições de configuração para atualizações. Nesses casos, você pode usar o -fixednames a opção de especificar que o ASP.NET ferramenta de compilação deve compilar um assembly para cada arquivo de fonte em vez de usar onde várias páginas são compiladas em assemblies. Isso pode levar a um grande número de assemblies, portanto, se você estiver preocupado com a escalabilidade você deve usar essa opção com cuidado.

Forte-Nome Compilação

O -aptca, -delaysign, -keycontainer e -keyfile as opções são fornecidas para que você possa usar Aspnet_compiler. exe para criar conjuntos nomeados altamente sem usar o Sn. exe (ferramenta de nome forte) separadamente. Essas opções correspondem, respectivamente, em AllowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute, e AssemblyKeyFileAttribute. Como cada opção aplica-se o atributo correspondente para o assemblycompilado e os atributos são marcados com um AttributeUsageAttribute cujo AllowMultiple propriedade false, usando essas chaves no código fonte , que já foi marcada com um desses atributos faz com que a compilação a falhar.

ASP\ de ASP.NET Classes

Várias classes na System.Web.Compilation namespace habilitar seu código acessar ou chamar Aspnet_compiler. exe fora do ambientede IIS. O ClientBuildManager classe fornece o PrecompileApplication método para compilar um aplicativo. O ClientBuildManager classe também funciona com o ClientBuildManagerParameter classe, que permite que você especifique PrecompilationFlags que correspondem às opções usadas por esta ferramenta e da mesma forma, para especificar chaves de nome forte .

Examples

O comando a seguir compila o aplicativo WebApplication1 no lugar:

Aspnet_compiler -v /WebApplication1

O comando a seguir compila o aplicativo WebApplication1 no lugar e a ferramenta adiciona informações de rastreamento de pilha se ele deve relatório erros.

Aspnet_compiler -v /WebApplication1 -errorstack

O comando a seguir compila o aplicativo WebApplication1 para implantação, usando o caminho do diretório físico. Ele também adiciona dois atributos para os assemblies de saída. Ele usa o -keyfile opção para adicionar um AssemblyKeyFileAttribute atributo, que especifica que o arquivo Key.sn contém as informações de par público/particular chave que a ferramenta deve usar para fornecer nomes de alta segurança para os assemblies gerados. O comando também usa o -aptca opção para adicionar um AllowPartiallyTrustedCallersAttributedeatributo para assemblies gerados. Webaplicativo compilado é criado no c:\applicationTarget diretório.

Aspnet_compiler -v /WebApplication1 -p "c:\Documents and Settings\Default\My Documents\MyWebApplications\WebApplication1" -keyfile "c:\Documents and Settings\Default\My Documents\Key.sn" -aptca c:\applicationTarget

O comando a seguir compila o serviço de WebService2 no caminho de metabase padrão, substituindo o diretório de destino do SampleWebService do aplicativocompilado.

Aspnet_compiler -m /LM/W3SVC/1/ROOT/WebService2 -f c:\InetPub\wwwroot\SampleWebService

Localizando a versão correta do Aspnet_compiler. exe

A ferramenta Aspnet_compiler. exe é instalada no Microsoft.NET Framework directory. Se o computador estiver executando vários.NET Framework versões lado a-pelo lado de-, várias versões da ferramenta podem ser instaladas. A tabela a seguir lista os locais onde a ferramenta está instalada para versões diferentes do.NET Framework.

Versão do.NET Framework

Local doarquivo .exedo Aspnet_compiler

.NET Framework versão 2.0, versão 3.0 e a versão 3.5 (32-sistemas de bit)

%windir%\Microsoft.NET\Framework\v2.0.50727

.NET Framework versão 2.0, versão 3.0 e a versão 3.5 (64-sistemas de bit)

%windir%\Microsoft.NET\Framework64\v2.0.50727

.NET Framework versão 4 (32-sistemas de bit)

%windir%\Microsoft.NET\Framework\v4.0.30319

.NET Framework versão 4 (64-sistemas de bit)

%windir%\Microsoft.NET\Framework64\v4.0.30319

Consulte também

Referência

AssemblyKeyFileAttribute

AssemblyKeyNameAttribute

AssemblyDelaySignAttribute

AllowPartiallyTrustedCallersAttribute

Sn. exe (ferramenta de nome forte)

Ferramenta de registro ASP.NET IIS (Aspnet_regiis.exe)

BuildManager.TargetFramework

Conceitos

Atraso na Assinatura de um Assembly

Assemblies de nomes fortes

.NET Framework multiplataforma para projetos da Web do ASP.NET

Visão geral da execução lado a lado do ASP.NET

Outros recursos

Ferramentas.NET Framework