Développer .NET sur Linux

(An English version of this articleisalsoavailable.)

J'ai plusieurs machines, dont une sous Linux. Puisqu'il s'agit d'une machine de bureau, je l'utilise souvent pour le développement, mais j'aimerais vous présenter l'environnement.

Que puis-je faire?

.NET Core est compatible avec plusieurs plates-formes, vous pouvez donc effectuer presque le même développement que Windows.

Ce que tu peux faire

Voici ce que j'ai confirmé que c'est possible.

Impossible (ou difficile)

Comment créer un environnement

.NET Core .NET Core peut être utilisé avec la plupart des distributions majeures et divers packages sont disponibles, mais je voudrais recommander Shell Script. Installation à l'aide de / dotnet / core / tools / dotnet-install-script).

L'installation via des scripts shell facilite l'installation de plusieurs versions du runtime et des bibliothèques .NET Core.

Par exemple, si vous souhaitez installer la version LTS, cela ressemble à ceci:

./dotnet-install.sh --channel LTS

En outre, vous pouvez avoir besoin de bibliothèques supplémentaires qui doivent être installées. Celui qui semble généralement le moins souvent inclus est libicu.

Il n'est pas nécessaire que l'emplacement d'installation soit un emplacement accessible en écriture par l'utilisateur. Des modèles, outils, etc. supplémentaires sont sous le contrôle de chaque utilisateur.

Environnement de développement

Visual Studio Code Si vous souhaitez préparer gratuitement un environnement de développement, les combinaisons suivantes sont recommandées.

Avec ce qui précède, vous pouvez créer un environnement dans lequel vous pouvez commencer le développement.

JetBrains Rider Si vous êtes prêt à dépenser de l'argent pour votre environnement de développement, c'est une option à considérer JetBrains Rider. JetBrains est également le développeur de ReSharper, un plug-in de refactoring pour Visual Studio, qui fournit une assistance de codage avancée. Par conséquent, il peut être développé confortablement.

Rider a Rider seul, la version groupée Rider et ReSharper et le pack All Products comprenant tous les produits IDE. Pour plus de détails, veuillez consulter la Page d'achat. (Je m'abonne personnellement au All Products Pack car je peux également l'utiliser dans d'autres langues.) Non limité à Rider, la plupart des IDE JetBrains sont également disponibles dans d'autres environnements comme Windows. Puisqu'il peut être utilisé, il est également utile dans la mesure où le même IDE peut être utilisé sur plusieurs OS.

De plus, la gestion des paquets NuGet peut être effectuée graphiquement, elle est donc recommandée pour ceux qui ont de nombreuses opportunités de faire du C #.

Autre

En utilisant OmniSharp (également utilisé dans l'extension ci-dessus), vous pouvez utiliser Language Server Protocol comme vous le souhaitez. Il est également possible de développer avec un éditeur. Cette méthode dépend de l'éditeur, je vais donc l'omettre ici.

Je vais l'essayer immédiatement

Création de projet

Une fois l'environnement en place, vous pouvez commencer le développement.

Utilisez la commande dotnet pour créer un projet.

dotnet new console -o myapp

Si vous l'exécutez sans aucun argument, vous verrez les modèles que vous pouvez utiliser:

dotnet new
Usage: new [options]

Options:
  -h, --help          Displays help for this command.
  -l, --list          Lists templates containing the specified name. If no name is specified, lists all templates.
  -n, --name          The name for the output being created. If no name is specified, the name of the current directory is used.
  -o, --output        Location to place the generated output.
  -i, --install       Installs a source or a template pack.
  -u, --uninstall     Uninstalls a source or a template pack.
  --nuget-source      Specifies a NuGet source to use during install.
  --type              Filters templates based on available types. Predefined values are "project", "item" or "other".
  --dry-run           Displays a summary of what would happen if the given command line were run if it would result in a template creation.
  --force             Forces content to be generated even if it would change existing files.
  -lang, --language   Filters templates based on language and specifies the language of the template to create.
  --update-check      Check the currently installed template packs for updates.
  --update-apply      Check the currently installed template packs for update, and install the updates.


Templates                                         Short Name               Language          Tags                                 
----------------------------------------------------------------------------------------------------------------------------------
Console Application                               console                  [C#], F#, VB      Common/Console                       
Class library                                     classlib                 [C#], F#, VB      Common/Library                       
WPF Application                                   wpf                      [C#]              Common/WPF                           
WPF Class library                                 wpflib                   [C#]              Common/WPF                           
WPF Custom Control Library                        wpfcustomcontrollib      [C#]              Common/WPF                           
WPF User Control Library                          wpfusercontrollib        [C#]              Common/WPF                           
Windows Forms (WinForms) Application              winforms                 [C#]              Common/WinForms                      
Windows Forms (WinForms) Class library            winformslib              [C#]              Common/WinForms                      
Worker Service                                    worker                   [C#]              Common/Worker/Web                    
Unit Test Project                                 mstest                   [C#], F#, VB      Test/MSTest                          
NUnit 3 Test Project                              nunit                    [C#], F#, VB      Test/NUnit                           
NUnit 3 Test Item                                 nunit-test               [C#], F#, VB      Test/NUnit                           
xUnit Test Project                                xunit                    [C#], F#, VB      Test/xUnit                           
Razor Component                                   razorcomponent           [C#]              Web/ASP.NET                          
Razor Page                                        page                     [C#]              Web/ASP.NET                          
MVC ViewImports                                   viewimports              [C#]              Web/ASP.NET                          
MVC ViewStart                                     viewstart                [C#]              Web/ASP.NET                          
Blazor Server App                                 blazorserver             [C#]              Web/Blazor                           
Blazor WebAssembly App                            blazorwasm               [C#]              Web/Blazor/WebAssembly               
ASP.NET Core Empty                                web                      [C#], F#          Web/Empty                            
ASP.NET Core Web App (Model-View-Controller)      mvc                      [C#], F#          Web/MVC                              
ASP.NET Core Web App                              webapp                   [C#]              Web/MVC/Razor Pages                  
ASP.NET Core with Angular                         angular                  [C#]              Web/MVC/SPA                          
ASP.NET Core with React.js                        react                    [C#]              Web/MVC/SPA                          
ASP.NET Core with React.js and Redux              reactredux               [C#]              Web/MVC/SPA                          
Razor Class Library                               razorclasslib            [C#]              Web/Razor/Library/Razor Class Library
ASP.NET Core Web API                              webapi                   [C#], F#          Web/WebAPI                           
ASP.NET Core gRPC Service                         grpc                     [C#]              Web/gRPC                             
dotnet gitignore file                             gitignore                                  Config                               
global.json file                                  globaljson                                 Config                               
NuGet Config                                      nugetconfig                                Config                               
Dotnet local tool manifest file                   tool-manifest                              Config                               
Web Config                                        webconfig                                  Config                               
Solution File                                     sln                                        Solution                             
Protocol Buffer File                              proto                                      Web/gRPC      

Vous pouvez obtenir le modèle manquant en ligne et l'installer.

dotnet install hoge

Cela générera le code de la plaque chauffante pour votre application console dans le répertoire myapp afin que vous puissiez ouvrir l'éditeur et commencer le développement. (Visual Studio Code nécessite un environnement net car les composants nécessaires et le téléchargement du plug-in C # sont effectués au premier lancement, et cela peut prendre un peu la prochaine fois.)

Si vous utilisez Rider, vous pouvez créer un projet à partir d'une boîte de dialogue dédiée.

riderproject.png

Certains modèles ne sont pas pris en charge, dans ce cas, vous devrez créer un projet à partir de la ligne de commande.

Outils .NET Core

En utilisant la commande dotnet, vous pouvez créer et exploiter des projets, et sous la forme de .NET Core Tools Vous pouvez également installer divers outils.

Par exemple, PowerShell peut également être installé dans le cadre de .NET, auquel cas:

dotnet tool install -g powershell

Cela s'applique également si vous souhaitez installer d'autres outils ML.NET.

dotnet tool install -g mlnet

déboguer

Il est également possible de déboguer avec Visual Studio Code, et cela peut être fait comme un Visual Studio normal. vscode.png

Cependant, cela peut prendre un certain temps car les paramètres doivent être réécrits tels que launch.json </ code>. Un exemple est présenté ci-dessous.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "WARNING01": "*********************************************************************************",
            "WARNING02": "The C# extension was unable to automatically decode projects in the current",
            "WARNING03": "workspace to create a runnable launch.json file. A template launch.json file has",
            "WARNING04": "been created as a placeholder.",
            "WARNING05": "",
            "WARNING06": "If OmniSharp is currently unable to load your project, you can attempt to resolve",
            "WARNING07": "this by restoring any missing project dependencies (example: run 'dotnet restore')",
            "WARNING08": "and by fixing any reported errors from building the projects in your workspace.",
            "WARNING09": "If this allows OmniSharp to now load your project then --",
            "WARNING10": "  * Delete this file",
            "WARNING11": "  * Open the Visual Studio Code command palette (View->Command Palette)",
            "WARNING12": "  * run the command: '.NET: Generate Assets for Build and Debug'.",
            "WARNING13": "",
            "WARNING14": "If your project requires a more complex launch configuration, you may wish to delete",
            "WARNING15": "this configuration and pick a different template using the 'Add Configuration...'",
            "WARNING16": "button at the bottom of this file.",
            "WARNING17": "*********************************************************************************",
            "preLaunchTask": "build",
            "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/myapp.dll",
            "args": [],
            "cwd": "${workspaceFolder}",
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ]
}

Le fichier de paramètres lui-même a une fonction à générer automatiquement, mais vous devez définir vous-même le nom de la plate-forme ( netcoreapp3.1 </ code>) et le nom de l'application ( myapp.dll </ code>).

Lorsque vous utilisez Rider, c'est assez facile car de nombreuses parties sont automatiquement définies. rider.png

finalement

Avant l'avènement de .NET Core, il y avait Mono etc., mais .NET avait encore un caractère fort en tant qu'environnement Windows, mais après l'avènement de .NET Core, il est possible de se développer aussi bien que sous environnement Linux, y compris autour d'outils. Cela est devenu le cas.

Il peut y avoir des situations où il est pratique de pouvoir développer sous Linux, en particulier lorsque la destination du déploiement est Linux. Dans un tel cas, je pense que c'est un gros avantage de pouvoir créer un environnement de développement même avec Linux.

Recommended Posts