Traducido del artículo de haydenb "Comenzando con el desarrollo multiplataforma usando .NET en Ubuntu en WSL" el 3 de junio de 2020 1
.NET es un marco de software de código abierto para crear aplicaciones multiplataforma en Linux, Windows y macOS. Ubuntu 2 en WSL le permite crear y probar aplicaciones para Ubuntu y Windows al mismo tiempo. ¿Qué sucede cuando los fusionamos? Este blog demostrará cómo instalar la pila de desarrollo .NET en WSL y crear una aplicación sencilla compatible con el sistema operativo, y luego probarla en Linux y Windows.
Habilitar WSL 1
Inicie PowerShell como administrador y ejecute:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Si solo desea instalar WSL 1, puede reiniciar su computadora y omitir el siguiente paso.
Restart-Computer
Si desea instalar WSL 2, no reinicie, continúe con el siguiente paso:
Habilitar WSL 2 (Windows 10 2004+)
Para obtener más detalles sobre Ubuntu en WSL 2, consulte " Ubuntu en WSL 2 está generalmente disponible " 3 .
Inicie PowerShell como administrador y ejecute:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Luego reinicie el sistema operativo Windows:
Restart-Computer
Instalar Ubuntu en WSL
Descarga Ubuntu desde Microsoft Store:
Ubuntu 20.04 LTS en Microsoft Store 4
Para obtener más información sobre cómo instalar Ubuntu en WSL , consulte Ubuntu en la página 5 de la wiki de WSL .
Instalar Terminal de Windows
Descargue Windows Terminal de Microsoft Store:
Terminal de Windows en Microsoft Store 6
También puede descargar Windows Terminal desde GitHub .
Ejecute Ubuntu en WSL
Abra Windows Terminal y ejecute:
ubuntu.exe
Cuando ejecute Ubuntu en WSL por primera vez, se instalará y le pedirá que cree un usuario de Linux, que es independiente de los usuarios de Windows.
Salga y vuelva a abrir la Terminal de Windows, verá que Ubuntu aparece en el menú desplegable:
Puede configurar Windows Terminal en settings.json y configurar Ubuntu como el elemento predeterminado.
Actualizar Ubuntu en WSL
Debe buscar actualizaciones con regularidad y ejecutar la actualización en Ubuntu en WSL. Usamos apt (administrador de paquetes de Ubuntu) para lograr.
Para buscar actualizaciones, ejecute:
sudo apt update
Para obtener la actualización, ejecute:
sudo apt upgrade
Puede usarlos &&
para conectarse en la misma fila y agregar una -y
etiqueta, actualizaciones automáticas y actualizaciones de aplicaciones disponibles:
sudo apt update && sudo apt upgrade -y
Agregue el repositorio .NET y la clave de firma de Microsoft
Necesitamos agregar el repositorio .NET de Microsoft y la clave de firma a apt. Descargaremos e instalaremos un paquete de Microsoft para hacer esto.
Asegúrese de estar instalando el repositorio correcto para su versión de Ubuntu. Puede verificar la versión actual de Ubuntu con el siguiente comando:
cat /etc/os-release
El siguiente ejemplo usa Ubuntu 20.04, la última versión LTS de Canonical. Si todavía usa Ubuntu 16.04, 18.04 o 19.10, puede encontrar la biblioteca de recursos correspondiente en el Documento 7 de Microsoft . Para obtener más información sobre la diferencia entre LTS y las versiones intermedias, tenemos un ciclo de lanzamiento en la página 8 .
Descargue la biblioteca de recursos y el paquete de claves de Microsoft para la versión 20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
Utilice dpkg -i para instalar manualmente el paquete de recursos de Microsoft:
sudo dpkg -i packages-microsoft-prod.deb
Ahora, cuando actualice apt, verá que la biblioteca de recursos de Microsoft se ha verificado y actualizado:
Instalar .NET SDK
Utilice apt para instalar .NET y las dependencias relacionadas desde el repositorio de Microsoft:
sudo apt-get install dotnet-sdk-3.1 -y
Nuevo espacio de trabajo
Cree un nuevo directorio de trabajo y ábralo:
mkdir dotnetproject
cd dotnetproject/
Crea un nuevo proyecto .NET
Úselo dotnet new
para crear un nuevo proyecto de consola .NET, que creará un Program.cs
archivo con nombre y algunas otras carpetas y archivos necesarios:
dotnet new console
Explore nuestras aplicaciones .NET
Enumere los archivos en su nuevo proyecto .NET:
ls
Verifique Program.cs
el contenido:
cat Program.cs
Ejecute el programa de muestra:
dotnet run
Personaliza nuestra aplicación .NET
Abra en su editor favorito Program.cs
: vi, nano, emacs o VS Code con extensión WSL remota :
Aquí, usamos nano incluido en Ubuntu en WSL:
nano Program.cs
Primero, agregamos el espacio de nombres de servicios de interoperabilidad :
using System.Runtime.InteropServices;
Luego pon:
Console.WriteLine("Hello World!");
Reemplazar con:
Console.WriteLine($"Hello {System.Environment.GetEnvironmentVariable("USER")}");
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Console.WriteLine("We're on Linux!");
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Console.WriteLine("We're on Windows!");
}
Console.WriteLine("Version {0}", Environment.OSVersion.Version);
Este código también se puede encontrar aquí 9 .
Esta aplicación nos dice: el usuario actual, verifique si está en Windows o Linux, y luego proporcione la versión del kernel del sistema operativo.
Salga y guarde, luego ejecute:
dotnet run
Haga que nuestra aplicación .NET sea multiplataforma
Necesitamos actualizar el archivo de proyecto .NET dotnetproject.csproj
para indicarle a .NET que compile para plataformas Linux y Windows.
Abra nuestro editor dotnetproject.csproj
y agregue:
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
Esto guiará a .NET para crear archivos binarios autónomos para Windows 10 x64 y Linux x64.
Cree nuestra aplicación multiplataforma
Cuando hemos configurado el proyecto, construir una aplicación .NET se vuelve tan simple:
dotnet publish -r win10-x64
dotnet publish -r linux-x64
El proyecto se puede /bin/
encontrar en la carpeta de archivos binarios de cada plataforma y todas sus bibliotecas necesarias son independientes:
ls bin/Debug/netcoreapp3.1/
Prueba la versión de Linux
Puede ejecutar directamente el archivo binario de Linux de la siguiente manera:
./bin/Debug/netcoreapp3.1/linux-x64/publish/dotnetproject
Prueba la versión de Windows
Para ejecutar la versión de Windows, cópiela en el sistema de archivos de Windows:
cp -r ~/dotnetproject/bin/Debug/netcoreapp3.1/win10-x64/publish /mnt/c/Users/Hayden/OneDrive/Desktop/
Nota del traductor:
aquí está el/mnt/
directorio raíz del sistema Ubuntu, consulte el sistema de archivos de Windows,/mnt/c/
es decir , la unidad C del sistema de Windows.
Entonces corre:
/mnt/c/Users/Hayden/OneDrive/Desktop/publish/dotnetproject.exe
Hasta ahora, hemos creado y ejecutado la misma aplicación para Linux y Windows. Podemos usar WSL para probarlos al mismo tiempo.
Autor: haydenb
Traductor: Technical Zemin
Editor: Technical Verses
enlaces: texto en inglés
https://ubuntu.com/blog/creating-cross-platform-applications-with-net-on-ubuntu-on-wsl Introducción al desarrollo multiplataforma utilizando .NET en Ubuntu en WSL ↩︎
https://ubuntu.com/wsl Ubuntu en WSL ↩︎
https://ubuntu.com/blog/ubuntu-on-wsl-2-is-generally-available Ubuntu en WSL 2 está generalmente disponible ↩︎
https://www.microsoft.com/store/productId/9N6SVWS3RX71 Ubuntu 20.04 LTS en Microsoft Store ↩︎
https://wiki.ubuntu.com/WSL Ubuntu en WSL wiki ↩︎
https://www.microsoft.com/store/productId/9N0DX20HK701 Terminal de Windows en Microsoft Store ↩︎
https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu ↩︎