Os arquivos .dll
em GameDataFolder/Managed
pertencem a um programa de código nativo que usa o Mono internamente.
O mecanismo de jogo Unity incorpora o Mono (mesmo na maioria das plataformas Windows).
Executáveis de plataforma cruzada e bibliotecas compartilhadas que podem ser executadas pelo Common Language Runtime ou Mono do .NET são frequentemente nomeadas com .exe
e .dll
sufixos, respectivamente, mesmo quando não são específicos do Windows. Quando você encontra um arquivo .dll
em um programa para um sistema GNU / Linux como o Ubuntu, ou para qualquer sistema operacional exceto Windows, isso é geralmente porque. Na maioria das vezes você encontra um .dll
em um sistema Ubuntu, a resposta da Golboth explica isso. Mas não é bem o que está acontecendo aqui.
O mecanismo de jogo Unity - que não deve ser confundido com a interface gráfica padrão na maioria dos lançamentos do Ubuntu - é um popular mecanismo de jogo multi-plataforma proprietário. Este mecanismo não é executado no topo do .NET Framework ou Mono. Em vez disso, ele incorpora o Mono , o que significa que o Mono é executado em cima dele. É assim que os desenvolvedores escrevem o código que seu jogo precisa e que ainda não faz parte do mecanismo Unity.
Em geral, o Mono pode ser usado da mesma maneira que o .NET CLR da Microsoft é usado para executar programas .NET / Mono completos. Mas o Mono também foi projetado para ser facilmente incorporável em aplicativos de código nativo , incluindo para permitir que esses aplicativos sejam personalizados . Isso é o que está acontecendo na situação que você está descrevendo. Os arquivos que você vê não pertencem a um programa que é executado diretamente sobre o Mono ou o .NET CLR. Em vez disso, eles pertencem a um programa de código nativo que incorpora o Mono.
Como o Unity Game Engine usa Mono
O mecanismo de jogo Unity, que é escrito principalmente em C ++, hospeda sua própria instância do Mono, que não usa - e pode ser diferente de - a versão (se houver) instalada através do gerenciador de pacotes do seu sistema. Esse tempo de execução Mono integrado não pode ser usado para executar programas .NET / Mono autônomos, porque essa não é sua finalidade. Em vez disso, a parte do código nativo do mecanismo usa-o para executar o código CIL. (CIL é Common Intermediate Language , que é seu nome oficial. Anteriormente era chamado de MSIL ou Microsoft Intermediate Language, desde que a Microsoft desenvolveu originalmente.) Os programadores que fazem jogos que usam o mecanismo Unity geralmente escrevem seu próprio código em C #, embora algumas outras linguagens sejam suportadas.
O mecanismo Unity incorpora o Mono mesmo no Windows. Para jogos Plataforma Universal do Windows - e nenhuma outra plataforma - usa o Microsoft .NET Framework em vez do Mono. Mas a maioria dos jogos Unity na maioria das plataformas, incluindo a maioria dos dispositivos móveis e consoles de jogos, incluindo o Ubuntu e o Windows, usam o Mono. Em algumas plataformas, o IL2CPP está disponível como uma alternativa ao Mono, e em apenas alguns, o IL2CPP é suportado. Consulte Restrições de scripts para obter detalhes.
Outras situações em que você pode ver arquivos .dll
no Ubuntu
Duas situações em que você provavelmente verá um arquivo .dll
no Ubuntu foram descritas:
- Uma biblioteca compartilhada que deve ser usada por um aplicativo .NET / Mono. A resposta de Golboth descreve isso em detalhes. Isto é o que a maioria dos
.dll
s você verá em um sistema Ubuntu. Simplesmente não é o que os arquivos .dll
na sua pasta GameDataFolder/Managed
são para.
- Um arquivo que fornece o código que é usado por um tempo de execução Mono incorporado para fornecer "scripts" para um aplicativo de código nativo. Isso é o que está acontecendo neste caso.
Existem dois outros casos razoavelmente comuns em que você pode ver um arquivo .dll
no Ubuntu:
- O compilador do .NET Core produz arquivos
.dll
em vez de arquivos .exe
, mesmo quando o que você está compilando não é uma biblioteca. O tempo de execução do .NET Core (chamado CoreCLR) e não o .NET Framework regular ou Mono, executam esses arquivos. O .NET Core é um produto da Microsoft, mas, ao contrário do padrão .NET Framework, o .NET Core é multi-plataforma com suporte oficial para sistemas GNU / Linux como o Ubuntu, e é um software livre de código aberto .
- Às vezes, um arquivo
.dll
que você vê no Ubuntu será apenas uma biblioteca do Windows. Você pode ver isso se o programa estiver sendo armazenado em um sistema Ubuntu, mas executado no Windows ou se você montar uma unidade do Windows no Ubuntu. Você também pode vê-lo em conexão com programas que podem ser executados no Ubuntu usando o Wine , incluindo software que vem com o Wine ou que você instale automaticamente com wintricks
para oferecer suporte a outros softwares do Windows.
Esta não é uma tentativa de listar exaustivamente todas as circunstâncias em que você pode encontrar um .dll
no Ubuntu. (Por exemplo, também pode ser uma biblioteca OS / 2 .) No entanto, acredito que esses quatro casos são os mais comuns.