ASP.NET Compilation ferramenta (Aspnet_compiler.exe)
A ferramenta de compilação do ASP.NET (Aspnet_compiler.exe) permite que você compila um aplicativo ASP.NET, in-loco ou para implantação em um local de destino como um servidor de produção. Compilação in-loco ajuda o desempenho do aplicativo, pois os usuários finais não encontrarão um atraso na primeira solicitação para o aplicativo enquanto o aplicativo é compilado.
Compilação para implantação pode ser executada em uma das seguintes maneiras: um que remove todos sistema autônomo arquivos de fonte, sistema autônomo arquivos code-behind e marcação, ou um que mantém sistema autônomo arquivos de marcação.
Observação: |
---|
A ferramenta de compilação do ASP.NET não está disponível para versões do ASP.NET anteriores ao ASP.NET 2.0. |
aspnet_compiler [-?]
[-m metabasePath | -v virtualPath [-p physicalPath]]
[[-u] [-f] [-d] [-fixednames] targetDir]
[-c]
[-errorstack]
[-nologo]
[[-keyfile file | -keycontainer container ] [-aptca] [-delaysign]]
Opções
Opção |
Descrição |
---|---|
-m metabasePath |
Especifica o caminho completo do metabase do IIS do aplicativo a ser compilado. A metabase do IIS é um armazenamento de informações hierárquica que é usado para configurar o IIS. Por exemplo, o caminho da metabase para o site da Web do IIS padrão é LM/W3SVC/1/raiz. Essa opção não pode ser combinada com o -v ou -p opções. |
-v virtualPath |
Especifica o caminho virtual do aplicativo a ser compilado. If -p também for especificado, o valor do que o acompanha physicalPath parâmetro é usado para localizar o aplicativo 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 LM/W3SVC/1/raiz). Essa opção não pode ser combinada com o -m opção. |
-p physicalPath |
Especifica o caminho de rede completo ou caminho de disco local do diretório raiz que contém o aplicativo ser compilado. If -p não é 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 Aspnet_compiler.exe deve criar um aplicativo de pré-compilado que permite atualizações subseqüentes do Sumário, sistema autônomo 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 atualizar o aplicativo apenas, alterando os arquivos de marcação de fonte e recompilar. The targetDir o parâmetro deve ser incluído. |
-f |
Especifica que a ferramenta deve substituir arquivos existentes no targetDir diretório e seus subdiretórios. |
-d |
Substitui as configurações definidas nos arquivos de configuração do aplicativo para forçar informações da depuração a serem incluídas no aplicativo compilado. Caso contrário, não será emitida nenhuma saída de depuração. Não é possível usar o -d opção de compilação no local; compilação no local respeita as configurações de opções de depuração. |
targetDir |
O caminho de rede ou caminho de disco local para o diretório raiz que conterá o aplicativo compilado. Se o targetDir parâmetro não for incluído, o aplicativo é compilado no lugar. |
-c |
Especifica que o aplicativo a ser compilado deve ser totalmente reconstruído. Componentes que já foram compilados são compilados novamente. Se esta opção for omitida, a ferramenta baseia-se somente às partes do aplicativo que foram modificadas desde que a compilação foi executada pela última vez. |
-errorstack |
Especifica que a ferramenta deve incluir informações de rastreamento de pilha se ele falhar compilar o aplicativo. |
-keyfile file |
Especifica que o AssemblyKeyFileAttribute, que indica o nome do arquivo que contém pública/emparelharticular chave emparelhar que é usado emparelhara gerar um nome forte, deve ser aplicado ao assembly compilado. Esta opção deve ser combinada com o -aptca opção. Se o atributo já for aplicado ao conjunto de módulos (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 emparelhar de chaves pública/particular que é usado para gerar um nome forte, deve ser aplicado ao assembly compilado. Esta opção deve ser combinada com o -aptca opção. Se o atributo já for aplicado ao conjunto de módulos (assembly) em arquivos de código, Aspnet_compiler.exe lança uma exceção. |
-aptca |
Especifica que o AllowPartiallyTrustedCallersAttribute, que permite chamadores parcialmente confiável acesso a um assembly deve ser aplicado ao assembly fortemente nomeado que gera Aspnet_compiler.exe. Esta opção deve ser combinada com o -keyfile ou -keycontainer opção. Se o atributo já for aplicado ao conjunto de módulos (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 pública em vez do emparelhar de chaves pública/particular, deve ser aplicado ao assembly gerado. Esta opção deve ser combinada com o -keyfile ou -keycontainer opção. Se o atributo já for aplicado ao conjunto de módulos (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 executado antes que o código é assinado. Você deve garantir 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, em cujo caso um hash é gerado e usado para o nome do assembly. Não é possível usar o -fixednames opção de compilação no local; compilação no local respeita as configurações para modo de lotes de compilação. |
-nologo |
Suprime a mensagem de direitos autorais. |
-? |
Exibe sintaxe de comando e opções para a ferramenta. |
Comentários
A ferramenta de compilação ASP.NET pode ser usada de duas maneiras Geral: para compilação no local e compilação para implantação, em que um diretório de saída de destino é especificado. As seções a seguir descrevem esses cenários.
Compilando um aplicativo no local
A ferramenta de compilação ASP.NET pode compilar um aplicativo no local, ou seja, ele imita o comportamento de fazer várias solicitações do aplicativo, fazendo com que 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 gravar para o destino de pré-compilação seja bem-sucedida.
Quando você pré-compilar um site in-loco, os itens a seguir se aplicam:
O site mantém seus arquivos e estrutura de 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á compilação.
Você também pode recompilar um aplicativo em funcionamento depois de adicionar novos arquivos de fonte. A ferramenta compila somente os arquivos novos ou alterados, a menos que você inclua o -c opção.
Observação: |
---|
compilar de um aplicativo que contém um aplicativo aninhado não compila o aplicativo aninhado. O aplicativo aninhado deve ser compilado separadamente. |
Observação: |
---|
Quando você compilar um aplicativo Web Web que inclui mestre páginas compilação pode Falha Se compilar o aplicativo sistema autônomo um site atualizável e um conflito de nomes ocorre . O conflito pode ocorrem se o nome dos mestre página coincide com o name da namespace Para uma página de conteúdo que deriva da página-mestre . (O herança o Relação é establis hed com o Inherits atributo das @ página diretiva). Para contornar esse problema, altere o nome de classe da página mestra ou alterar o nome do namespace, ou você pode compilar o aplicativo sistema autônomo não atualizável. |
Compilando um aplicativo para implantação
Compilar um aplicativo para implantação (compilação para um local de destino), especificando o targetDir parâmetro. The targetDir pode ser o local final para aplicativo Web Web ou aplicativo Web compilado pode ser implantado ainda mais.
Usando o -u opção compila o aplicativo de forma que pode fazer alterações no certos arquivos no aplicativo compilado sem recompilá-lo. Aspnet_compiler.exe faz uma distinção entre tipos de arquivo estático e dinâmico e trata-los de maneira diferente ao criar o aplicativo resultante.
Estático arquivo tipos são sistema autônomo que não têm um compilador associado ou criar o provedor, sistema autônomo sistema autônomo arquivo cujos nomes têm extensões sistema autônomo .css, .gif, .htm, .html, .jpg, .js e assim por diante. Simplesmente, esses arquivos são copiados para o local de destino, com suas casas relativas na estrutura do diretório preservados.
Tipos de arquivos dinâmico são aqueles que têm um compilador associado ou criar provedor, incluindo arquivos com extensões de nome de arquivo ASP.NET específicas, sistema autônomo .asax, .ascx, .ashx, .aspx, .navegador,. mestre e assim por diante. A ferramenta de compilação ASP.NET gera assemblies desses arquivos. Se o -u opção for omitida, a ferramenta também cria arquivos com a extensão de nome de arquivo .COMPILED que mapeiam os arquivos de fonte para o seu assembly. Para garantir que a estrutura de diretórios de fonte aplicativo é preservada, a ferramenta gera arquivos de espaço reservado nos locais correspondentes no aplicativo de 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 de time de execução.
A tabela a seguir descreve como o ASP.NET Compilation ferramenta alças de diferentes tipos de arquivos quando o -u opção está incluída.
Tipo de arquivo |
Ação do compilador |
---|---|
.ascx, .aspx,. mestre |
Esses arquivos são divididos em código-fonte e marcação, que inclui arquivos code-behind. Código-fonte é compilado em módulos (assemblies), com nomes derivados de um algoritmo de hash e os assemblies são colocados no diretório bin. Qualquer código de in-line, ou seja, código entre <script runat="server"> elementos, é incluído com a marcação e não compilado. Novos arquivos com o mesmo nome que sistema autônomo arquivos de fonte são criados para conter a marcação e colocados nos diretórios de saída correspondentes. |
.ashx, .asmx |
Esses arquivos não são compilados e são movidos para sistema autônomo diretórios de saída sistema autônomo está 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 arquivos code-behind para os tipos de arquivo listados anteriormente) |
Esses arquivos são compilados e incluídos sistema autônomo um recurso em assemblies que fazem referência a eles. Arquivos de fonte 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. |
Personalizado arquivo tipos |
Esses arquivos não são compilados. Esses arquivos são copiados para os diretórios de saída correspondentes. |
Arquivos de código-fonte na subdiretório App_Code |
Esses arquivos são compilados em módulos (assemblies) e colocados no diretório bin.
Observação:
Tipos de arquivo estático no diretório App_Code não serão copiados para os diretórios de saída.
|
arquivos .resx e .recurso no subdiretório App_GlobalResources |
Esses arquivos são compilados em módulos (assemblies) e colocados no diretório bin. Nenhum subdiretório App_GlobalResources é criado sob o diretório de saída principal e nenhum arquivo resx ou .Recursos localizado no diretório de fonte será copiado para os diretórios de saída.
Observação:
O recurso arquivos na subpasta App_Globalrecursos são compilados em assemblies antes que o código no subdiretório App_Code é compilado.Modificação de arquivos de recursos após a compilação não é suportada.
|
arquivos .resx e .recurso na subdiretório App_LocalResources |
Esses arquivos não são compilados e são copiados para os diretórios de saída correspondentes. |
arquivos .capa no subdiretório App_Themes |
Os arquivos .capa e os arquivos de tema estático não são compilados e são copiados para os diretórios de saída correspondentes. |
.browser Web.config Tipos de arquivo estático Módulos (assemblies) já está presente no diretório bin |
Esses arquivos são copiados para sistema autônomo diretórios de saída. |
A tabela a seguir descreve como o ASP.NET Compilation ferramenta alças de diferentes tipos de arquivos quando o -u opção é omitida.
Observação: |
---|
Não há avisos são fornecidos para impedir que você modificar o código-fonte de um aplicativo compilado. |
Tipo de arquivo |
Ação do compilador |
---|---|
.aspx, .asmx, .ashx,. mestre |
Esses arquivos são divididos em código-fonte e marcação, que inclui arquivos code-behind e qualquer código que está contido em <script runat="server"> elementos. Código-fonte é compilado em módulos (assemblies), com nomes derivados de um algoritmo de hash. Os conjuntos resultantes são colocados no diretório bin. Qualquer código de in-line, ou seja, código entre o <% e %> colchetes, está incluído em marcação e não compilado. O compilador cria novos arquivos para conter a marcação com o mesmo nome que sistema autônomo arquivos de fonte. Esses arquivos resultantes são colocados no diretório bin. O compilador também cria arquivos com o mesmo nome sistema autônomo arquivos de fonte, mas com a extensão .COMPILED que contêm informações de mapeamento. Os arquivos .COMPILED são colocados nos diretórios de saída correspondente ao local original os arquivos de fonte. |
.ascx |
Esses arquivos são divididos em código-fonte e marcação. Código fonte é compilado em módulos (assemblies) e colocado no diretório bin, com nomes derivados de um algoritmo de hash. Nenhum arquivo de marcação é gerado. |
. cs, .vb, .jsl, .cpp (não incluindo arquivos code-behind para os tipos de arquivo listados anteriormente) |
Código fonte que é referenciado por assemblies gerados a partir de .ascx, .ashx ou arquivos .aspx é compilado em módulos (assemblies) e colocado no diretório bin. Nenhum arquivo de fonte será copiado. |
Personalizado arquivo tipos |
Esses arquivos são compilados como arquivos dinâmicos. Dependendo do tipo de arquivo se baseiam, o compilador pode colocar arquivos de mapeamento de pastas da saída. |
Arquivos na subdiretório App_Code |
Arquivos de código-fonte nesse subdiretório são compilados em módulos (assemblies) e colocados no diretório bin.
Observação:
Tipos de arquivo estático no diretório App_Code não serão copiados para os diretórios de saída.
|
Arquivos no subdiretório App_GlobalResources |
Esses arquivos são compilados em módulos (assemblies) e colocados no diretório bin. Nenhum 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 .Recursos são copiados para os diretórios de saída. Não são copiados se eles são referenciados por um BuildProvider. |
arquivos .resx e .recurso na subdiretório App_LocalResources |
Esses arquivos são compilados em assemblies com nomes exclusivos e colocados no diretório bin. Não há arquivos .resx ou .recurso são copiados para os diretórios de saída. |
arquivos .capa no subdiretório App_Themes |
Temas são compilados em módulos (assemblies) e colocados no diretório bin. Arquivos de stub são criados para arquivos .capa e colocados no diretório de saída correspondente. Arquivos estático (sistema autônomo, por exemplo, .css) são copiados para sistema autônomo 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 assembly fixos
Alguns cenários, tais sistema autônomo implantar um aplicativo Web usando o Windows Installer MSI, exigem o uso de nomes de arquivo consistente e Sumário, bem sistema autônomo sistema autônomo estruturas de diretório consistentes para identificar sistema autônomo assemblies ou definições de configuração de atualizações. Nesses casos, você pode usar o -fixednames opção para especificar que a ferramenta de compilação ASP.NET 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 escalabilidade você deve usar essa opção com cuidado.
Compilação de nome forte
The -aptca, -delaysign, -keycontainer e -keyfile as opções são fornecidas para que possa usar Aspnet_compiler.exe para criar conjuntos nomeados com rigidez sem usar o Ferramenta Strong Name (Sn.exe) separadamente. Essas opções correspondem, respectivamente, a AllowPartiallyTrustedCallersAttribute, AssemblyDelaySignAttribute, AssemblyKeyNameAttribute, e AssemblyKeyFileAttribute. Como cada opção aplica-se o atributo correspondente ao assembly compilado e os atributos são marcados com um AttributeUsageAttribute cujo AllowMultiple propriedade estiver definida como false, o uso dessas chaves em código-fonte que já foi marcado com um desses atributos causa compilação falhar.
Classes do ASP.NET associadas
Várias classes no System.Web.Compilation namespace permitir que seu código acesso ou invocar Aspnet_compiler.exe fora do ambiente do IIS. The ClientBuildManager classe fornece o PrecompileApplication método para compilar um aplicativo. The 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.
Exemplos
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 relatar 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 assemblies de saída. Ele usa o -keyfile opção para adicionar um AssemblyKeyFileAttribute atributo especifica que o arquivo chave.sn contém as informações do emparelhar de chaves pública/particular que deve usar a ferramenta para fornecer nomes de alta segurança para conjuntos gerados. O comando também usa o -aptca opção para adicionar um AllowPartiallyTrustedCallersAttribute o atributo para assemblies gerados. O aplicativo Web 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 WebService2 no caminho de metabase padrão, substituindo o diretório de destino SampleWebService o aplicativo compilado.
Aspnet_compiler -m /LM/W3SVC/1/ROOT/WebService2 -f c:\InetPub\wwwroot\SampleWebService
Consulte também
Conceitos
Atraso na Assinatura de um Assembly
Referência
AllowPartiallyTrustedCallersAttribute