É possível compilar o código .NET IL para código de máquina?
-
02-07-2019 - |
Pergunta
Eu gostaria de distribuir meus programas .NET sem o .NET framework. É possível compilar um programa .NET para código de máquina?
Solução
Sim, você pode pré-compilar utilizando Ngen.exe, no entanto, isso não remove a dependência CLR.
Você ainda deve enviar as assembleias IL, bem como, o único benefício de Ngen é que a sua aplicação pode começar sem invocar o JIT, de modo a obter um verdadeiro tempo de inicialização rápida.
De acordo com CLR Via C #:
Além disso, os conjuntos pré-compilado utilizando Ngen são geralmente mais lento do que JIT'ed montagens porque o compilador JIT pode otimizar a máquina alvos (? 64 bits? registros especiais de 32 bits? etc), enquanto NGEN só vai produzir um baseline compilação.
EDIT:
Há algum debate sobre a informação acima da CLR Via C #, como alguns dizem que você é obrigado a correr Ngen na máquina de destino apenas como parte do processo de instalação.
Outras dicas
Remotesoft tem um: Salamander .NET Linker
Eu não tenho nenhuma experiência com ele embora.
Existem algumas ferramentas de terceiros que fazem isso, por exemplo.
Outro (caro e proprietário, licenças começam em US $ 1599) produto que pode fazer isso é Xenocode Postbuild . Já não usei-me embora, com ele custando sobre o produto nacional bruto de um pequeno país Africano e tudo ...
É possível compilar o código .NET IL para código de máquina?
Sim, mas o .NET Framework faz isso por você em tempo de execução (padrão) ou no momento da instalação (ngen). Entre outras razões, esta IL - código de máquina> é feita separadamente em cada máquina instalar para que possa ser otimizado para que determinada máquina
.Eu gostaria de distribuir meu .NET programas sem o .NET framework. É possível compilar uma .NET programa para código de máquina?
Não, para todos os efeitos, você não pode fazer isso. O 3º soluções alternativas partido pode funcionar em alguns cenários, mas então eu realmente não iria considerá-lo "código gerenciado" ou "NET" mais.
Sim, agora você pode! Recentemente, a Microsoft anunciou .NET nativo , um pedaço de tecnologia que compila a sua aplicação com .NET Native tempo de execução (que eles chamam de MRT) em um binário (na verdade, um executável e uma biblioteca dinâmica).
Veja os links: http: //blogs.msdn .com / b / dotnet / Arquivo / 2014/04/02 / anunciando-net-nativa-preview.aspx http://blogs.msdn.com/b /dotnet/archive/2014/04/24/dotnetnative-performance.aspx
Há IL2CPU para a parte de compilação.
Eu não acho que é possível. Você pode fazer uma prejitted montagem, mas você ainda precisa do quadro.
Se você apenas preocupado com o tamanho da implantação do quadro, que você pode ler sobre este .
Eu acho que você não deve: Essa é a tarefa do compilador JIT.
No entanto, você poderia usar ClickOnce ou Windows Installer para implantá-lo de modo que o quadro em falta não é um problema tão grande:. Você poderia dizer que o instalador para fazer o download do Framework e instalá-lo
Olhe projecto MONO: comando mono com opção --aot. http://www.mono-project.com/AOT
Eu sempre pensei que seria legal para compilar c # para o código de máquina diretamente, sem a dependência CLR embora ....