Partilhar via


Nativo imagem gerador (NGen.exe) herdado sintaxe

Essas informações neste tópico são fornecidas para usuários do .NET estrutura versão 1.0 e 1.1. Para obter a sintaxe versão 2.0, consulte Nativo imagem gerador (NGen.exe).

O nativo Image gerador cria uma imagem nativa de um assembly gerenciado e o instalará no cache de imagem nativa no computador local. O nativo cache de imagem é uma área reservada de cache de assemblies global. Depois de criar um nativo imagem para um assembly, o time de execução usa automaticamente que nativo sempre que for executada o assembly de imagem. Não é necessário realizar qualquer procedimento adicional para fazer com que o tempo de execução usar um nativo imagem. Executando NGen.exe em um assembly permite o assembly carregar e executar mais rapidamente, pois restaura o código e estruturas de dados da nativo imagem cache em vez de gerá-los dinamicamente.

ngen [options] [assemblyName |assemblyPath ]

Parâmetros

Argumento

Descrição

assemblyName

O nome do assembly para o qual você deseja gerar um nativo imagem. O assembly deve estar localizado no diretório corrente. Você pode fornecer um nome parcial ou completo de um assembly. Por exemplo, você pode fornecer o nome myAssembly ou o nome completo, como myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5. Se você desejar NGen.exe localizar e usar o arquivo de diretiva de publicador um assembly, você deve usar um nome de assembly totalmente especificado.

assemblyPath

O caminho explícito do assembly para o qual você deseja gerar uma imagem nativa. Você pode especificar um caminho completo para um assembly, sistema autônomo c:\applications\myApp\myApp.exe, um caminho relativo, sistema autônomo \applications\myApp\myApp.exe, ou um nome de arquivo sistema autônomo myApp.exe.

Se você especificar um nome de arquivo, sistema autônomo myApp.exe sem um caminho completo ou relativo, o assembly deve estar localizado no diretório corrente.

Para permitir NGen.exe identificar um assembly sistema autônomo um executável e localizar seu arquivo de configuração, você deve usar o assemblyPath argumento para especificar sistema autônomo assemblies com extensão .exe.

Se você especificar mais de um assembly na linha de comando, somente um dos conjuntos de módulos (assemblies) pode estar um arquivo executável. A ferramenta aplica propriedades de vinculação do arquivo executável (base de aplicativo e quaisquer arquivos de configuração) para outros assemblies que você especificar.

Opção

Descrição

/depurar

Gera um nativo imagem a ser usada por um depurador em modo normal de depuração.

/debugopt

Gera um nativo imagem a ser usada por um depurador no common linguagem tempo de execução do otimizado o modo de depuração. Consulte a documentação do depurador para obter detalhes sobre como ativar esse modo.

/delete [assemblyName | assemblyPath |

*]

Exclui o nativo imagens no nativo cache para o especificado de imagemassemblyName or assemblyPath. Se você especificar o ' * ' parâmetro, a ferramenta exclui todos os nativo imagens no nativo cache de imagem. Se você não especificar um parâmetro com o /excluir opção, a ferramenta exibe uma mensagem de erro.

Quando você desinstalar uma versão do .NET estrutura, o processo de desinstalação usa o /excluir opção para remover todos os nativo imagens para a versão do .NET estrutura que está sendo desinstalado. Isso inclui nativo imagens criadas para instalar o assemblies do .NET estrutura em vez assim sistema autônomo qualquer nativo imagens criadas pelo usuário para assemblies personalizados. Se você especificar o / excluir * opção com o /show opção, a ferramenta exibe uma lista do nativo imagens de exclusões.

Quando várias versões do .NET estrutura estão instaladas no mesmo computador ao mesmo time, para excluir um nativo imagem, você deve usar a mesma versão do NGen.exe foi usado para criar o nativo imagem.

ObservaçãoObservação:
Essa opção afeta somente o nativo imagens geradas com NGen.exe.Ele não tem efeito nos assemblies real.

/help

Exibe sintaxe de comando e opções para a ferramenta.

/nologo

Suprime a exibição Microsoft faixa de inicialização.

/Prof

Gera um nativo imagem a ser usada por um criador de perfil que usa código instrumentado. Consulte a documentação de seu criador de perfil para determinar se seu criador de perfil requer código instrumentado.

/show

Exibe os arquivos existentes no nativo cache para o especificado de imagemassemblyName or assemblyPath. Se você não especificar um argumento, a ferramenta exibirá o Sumário inteiro do nativo cache de imagem. Essa opção exibe informações de definição de assembly para o assembly de fonte e quaisquer opções de configuração de código especial para cada nativo imagem.

If you specify this option with the /delete * option, the tool displays a list of the native images it deletes.

/showversion

Exibe a versão do tempo de execução NGen.exe usará para gerar um nativo imagem para o assembly especificado. Quando várias versões do .NET estrutura estão instaladas no mesmo computador ao mesmo time, use esta opção para determinar a versão que usará a ferramenta. Para obter mais informações sobre como executar várias versões do tempo de execução, consulte Execução por lado.

ObservaçãoObservação:
Essa opção não irá gerar um nativo imagem.

/ silencioso

Suprime a exibição das mensagens de êxito.

/?

Exibe sintaxe de comando e opções para a ferramenta.

Comentários

NGen.exe não usa as regras de probing de assembly padrão localizar assemblies na linha de comando. NGen.exe procura apenas no diretório corrente módulos (assemblies) que você especificar. Portanto, para permitir NGen.exe localizar seus assemblies, você deve ou conjunto seu diretório de trabalho para o diretório que contém os assemblies que você deseja criar nativo imagens para ou especifique caminhos exatos para os assemblies.

A nativo imagem é um arquivo contendo compilado código de computador de processador específico. Observe que o nativo imagem NGen.exe gera não pode ser compartilhada entre Domínios de aplicativos. Portanto, não é possível usar NGen.exe em cenários de aplicativos que exigem conjuntos de módulos podem ser compartilhados entre domínios de aplicativo.

Pré-Compilando assemblies com NGen.exe pode melhorar o time de inicialização de aplicativos, porque a maioria do trabalho necessário para executar o código tiver sido feita antecipadamente. Portanto, é mais apropriado usar NGen.exe para aplicativos de cliente em que você determinou que os ciclos da CPU consumidos por compilação JIT causem desempenho mais lento.

ObservaçãoObservação:

Para executar NGen.exe, você deve ter privilégios administrativos.

Como há muitos fatores que afetam o time de inicialização de um aplicativo, você deve determinar cuidadosamente quais aplicativos beneficiariam o uso do NGen.exe. Experimente executando o uma compilação JIT e uma versão pré-compilada de um assembly de candidato no ambiente no qual ele será usado. Isso permitirá que você comparar o tempo de inicialização para o mesmo assembly em execução em compilação diferentes esquemas.

Após ter gerado um nativo imagem para um assembly, o tempo de execução automaticamente tenta localizar e usar isso nativo sempre que for executada o assembly de imagem. Por exemplo, se você executar um assembly em uma depurar ou cenário de criação de perfil, o tempo de execução procura por um nativo imagem que foi gerada com o /depurar, /debugopt, or /Prof opções. Se não conseguir localizar uma imagem nativa correspondente, o tempo de execução será revertido para padrão de Compilação JIT.

Se você executar NGen.exe em um assembly tem um atributo de código depurável, dependendo sinalizadores do atributo, a ferramenta gera automaticamente um código sistema autônomo se tivesse especificado o /depurar or /debugopt opções.

Se NGen.exe encontrar todos os métodos em um assembly que não é possível gerar, ele exclui-los da nativo imagem. Quando o tempo de execução executa este assembly, ele reverterá para compilação JIT para os métodos que não foram incluídos na nativo imagem.

Quando você usa NGen.exe para criar um nativo imagem de um assembly, a saída depende das opções de linha de comando que você especificar e determinadas configurações no seu computador. Essas configurações incluem o seguinte:

  • A versão do .NET estrutura.

  • O tipo de CPU.

  • A versão do sistema operacional.

  • A identidade exata do assembly (recompilação altera identidade).

  • A identidade exata de todos os assemblies o conjunto de referências (recompilação alterações identidade).

  • Fatores de segurança.

NGen.exe registra essas informações quando ele gera um nativo imagem. Quando você executar um assembly, o tempo de execução procura o nativo imagem gerada com opções e configurações que correspondem ao ambiente corrente do computador. O tempo de execução será revertido para compilação JIT de um assembly, se ele não pode localizar uma correspondência nativo imagem. As seguintes alterações às configurações do computador e ambiente causar imagens nativas para se tornar inválido:

  • A versão do .NET estrutura.

    Se você aplicar uma atualização para o .NET estrutura, tornar-se todas as imagens nativas que você criou manualmente usando NGen.exe inválido. Esses assemblies ainda serão executado, mas o tempo de execução não carregará o assembly correspondente nativo imagem. Você deve criar manualmente novos nativo imagens para esses assemblies.

    O .NET estrutura cria automaticamente novas nativo imagens para as bibliotecas do .NET estrutura que ele instala.

  • O tipo de CPU.

    Se você atualizar o processador do computador para uma nova família de processador, todos os nativo imagens armazenadas no nativo imagem cache se tornem inválido.

  • A versão do sistema operacional.

    Se a versão do sistema operacional em execução em um computador for alterado, todos os nativo imagens armazenadas no nativo imagem cache se tornem inválido.

  • A identidade exata do assembly.

    Se você recompilar um assembly, o assembly do correspondente nativo imagem se torna inválido.

  • A identidade exata de todos os assemblies referências de assembly.

    Se você recompilar qualquer um dos assemblies que faz referência a um assembly, o assembly do correspondente nativo imagem se torna inválido.

  • Fatores de segurança.

    Alteração de diretiva de segurança de computador para restringir as permissões concedidas anteriormente a um assembly pode causar compilados anteriormente nativo imagem para esse assembly se tornem inválidos. Especificamente, revogar qualquer uma das seguintes permissões faz com que corrente um assembly nativo imagem fique inválido:

    • Uma permissão declarativa herança exigida por uma classe que deriva de assembly.

    • Uma permissão declarativa de link-time exigidos por um método que chama o assembly.

    • SkipVerification permissão, se o assembly contém todos os métodos não verificados. Para obter mais informações sobre essa permissão, consulte o Propriedade SecurityPermissionAttribute.SkipVerification.

    • UnmanagedCode permissão, se o assembly faz qualquer PInvoke chamadas. Para obter mais informações sobre essa permissão, consulte o Propriedade SecurityPermissionAttribute.UnmanagedCode.

    Se você executar o NGen.exe em um assembly com segurança de acesso do código desligada, o nativo imagem gera tornarão inválido quando a segurança de acesso do código está ativada. Observe que, por padrão de acesso ao código segurança é no.

    Para obter informações detalhadas sobre como o Common linguagem tempo de execução administra a segurança de acesso do código e como usar as permissões, consulte segurança de acesso do código

    ObservaçãoObservação:

    Na versão 1.0 do common linguagem tempo de execução, não existe a criação automático ou exclusão de nativo imagens que se tornem inválidas. Você deve criar manualmente e excluir todos os nativo imagens usando NGen.exe.

Se você usar NGen.exe para gerar nativo imagens para um aplicativo em time de instalar, você deve especificar o nome de arquivo de aplicativo e os nomes de assembly totalmente especificado do arquivo .dll arquivos o aplicativo referido no momento foi compilado. Fornecer os nomes de assembly totalmente especificado de DLLs que faz referência a um aplicativo, permite NGen.exe acessar os arquivos de diretiva de publicador para assemblies referenciados. No futuro, se as DLLs são atualizadas e diretiva de publicador é usada no redirecionamento de versão, NGen.exe aplicará a diretiva de publicador.

Você pode obter os nomes de assembly totalmente especificado para usar executando ILDASM.exe sobre um aplicativo e a exibição de manifesto do assembly. O manifesto exibe o nome do assembly, símbolo de versão, cultura e chave pública para as DLLs o aplicativo referido no time foi compilado. Por exemplo, se você deseja criar um nativo imagem de um aplicativo chamado ClientApp.exe que foi compilado com myLibrary.dll, versão 1.0.0.0, cultura = neutro e PublicKeyToken = 0038abc9deabfle5, use o comando ngen ClientApp.exe "myLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5".

Observação o exemplo anterior não irá gerar nativo imagens para os assemblies que myLibrary.dll referências. Para determinar os nomes especificados totalmente dos conjuntos de módulos (assemblies) que referências myLibrary.dll, execute ildasm.exe no myLibrary.dll. Por exemplo, se você executar o ILDASM.exe no myLibrary.dll e determinar que faz referência myMath.dll, versão 1.0.0.0, cultura = neutro e PublicKeyToken = 0039def8abcbste7, use o seguinte comando para gerar nativo imagens para toda a árvore de referências de assembly do ClientApp.exe.

ngen ClientApp.exe "myLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5", "myMath, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0039def8abcbste7".

Para obter mais informações sobre esse formato, consulte a seção exemplos neste tópico.

The uninstall process for an application should use the /delete [assemblyName | assemblyPath opção para remover o nativo imagens que foram criadas no momento em que o aplicativo foi instalado. Você deve especificar a específica nativo imagem excluir usando o assemblyName or assemblyPath parâmetro. Especificando / excluir * remove todas as imagens nativas na imagem nativa cache; especificando a /excluir opção sem parâmetros produz um erro.

Exemplos

O comando a seguir gera um nativo imagem para ClientApp.exe, localizado no diretório corrente. Se houver um arquivo de configuração para o aplicativo, NGen.exe vai usá-la. A ferramenta não irá gerar nativo imagens para quaisquer DLLs que ClientApp.exe referências.

ngen ClientApp.exe

If ClientApp.exe diretamente faz referência a duas DLLs myLibOne.dll e myLibTwo.dll, você deve fornecer NGen.exe com os nomes de assembly totalmente especificado para essas DLLs gerar nativo imagens para eles. Executar o ILDASM.exe sobre ClientApp.exe para determinar os nomes de assembly totalmente especificado DLL referenciado. O objetivo de neste exemplo, os nomes de assembly totalmente especificado de myLibOne.dll e myLibTwo.dll são "myLibOne, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5" e "myLibTwo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5". Usando essas informações, o comando a seguir gera nativo imagens para ClientApp.exe, myLibOne.dll, e myLibTwo.dll. Se existir um arquivo de configuração para ClientApp.exeNGen.exe vai usá-la. Se existir um arquivo de política de publicador para myLibOne.dll ou myLibTwo.dllNGen.exe vai usá-la.

ngen ClientApp.exe "myLibOne, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5", "myLibTwo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5"

No exemplo anterior, as DLLs myLibOne.dll e myLibTwo.dll pode referenciar outros assemblies. Para determinar os nomes de assembly totalmente especificado dos assemblies referenciados, execute ildasm.exe no myLibOne.dll e myLibTwo.dll. O objetivo de neste exemplo, suponha que myLibOne.dll não faz referência a outros assemblies, e myLibTwo.dll referências "myMath, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0039def8abcbste7". Usando essas informações, o comando a seguir gera nativo imagens para toda a árvore de referências de assembly do aplicativo.

ngen ClientApp.exe "myLibOne, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5", "myMath, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0039def8abcbste7", "myLibTwo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5"

O comando a seguir gera um nativo imagem para myAssembly.exe com o caminho especificado.

ngen c:\myfiles\myAssembly.exe

O comando a seguir gera um nativo imagem para myLibrary.dll, com o caminho especificado.

ngen c:\myfiles\myLibrary.dll

NGen.exe examina o nativo cache para excluir um conjunto especificado com um nome de conjunto parcial de imagem. O comando a seguir exclui todos os nativo imagens com o nome de myAssembly.

ngen /delete myAssembly

O seguinte comando exclui o nativo de imagemmyAssembly com o nome de assembly totalmente especificado.

ngen /delete "myAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5"

O comando a seguir exibe todos os nativo imagens no nativo cache de imagem.

ngen /show

O comando a seguir exibe todos os nativo imagens no nativo cache com o nome da imagemmyAssembly.

ngen /show myAssembly

O comando a seguir exibe todas as imagens nativas no cache de imagem nativa com o nome de myAssembly e a versão 1.0.

ngen /show "myAssembly, version=1.0.0.0"

Consulte também

Conceitos

Compilação MSIL para código nativo

Como o Runtime Localiza Assemblies

Referência

Ferramentas.NET Framework

Prompt de comando SDK