web-dev-qa-db-fra.com

Courir autonome ASP Application de base .NET sur Ubuntu

Premièrement, je suis un débutant sous Linux, alors pardonnez-moi.

J'ai publié une application ASP .NET Core en tant qu'application autonome ciblant Ubuntu. La publication semble bien fonctionner. J'ai copié les fichiers sur une jolie machine Ubilla de Vanilla. Maintenant, comment puis-je exécuter mon application? D'après ce que je comprends, étant donné qu'il s'agit d'une application .NET Core autonome, je n'ai PAS besoin de télécharger ni d'installer .NET Core. Mon application doit contenir tout ce dont elle a besoin.

Tous les tutoriels semblent dire que je devrais appeler $ runnet run. Cependant, la ligne de commande "dotnet" n'existe pas (est-il supposé être publié dans le dossier autonome?). Donc, si je l'appelle, j'obtiens "commande introuvable". Bien sûr, je pourrais télécharger .NET Core, mais cela ne va-t-il pas à l'encontre du concept autonome? Voici un exemple des fichiers que je copie.

 enter image description here

11
Mark

Réponse

Maintenant, comment puis-je exécuter mon application? D'après ce que je comprends, étant donné qu'il s'agit d'une application .NET Core autonome, je n'ai PAS besoin de télécharger ni d'installer .NET Core. Mon application doit contenir tout ce dont elle a besoin.

Vous avez raison. Exécutez l'exécutable.

Lorsque vous créez une application autonome, la sortie de publication "contient l'ensemble complet de fichiers (à la fois vos fichiers d'application et tous les fichiers .NET Core) nécessaires au lancement de votre application". Cela inclut l'exécutable.

Exemple de déploiement autonome

Voici la sortie de dotnet publish -c release -r ubuntu.14.04-x64 pour une application simple et autonome. Copiez le répertoire de publication sur Ubuntu et exécutez le fichier exécutable.

C:\MyApp\bin\release\netcoreapp1.0\ubuntu.14.04-x64\publish \

...

libsos.so
libsosplugin.so
libuv.so
Microsoft.CodeAnalysis.CSharp.dll
Microsoft.CodeAnalysis.dll
Microsoft.CodeAnalysis.VisualBasic.dll
Microsoft.CSharp.dll
Microsoft.VisualBasic.dll
Microsoft.Win32.Primitives.dll
Microsoft.Win32.Registry.dll
mscorlib.dll
mscorlib.ni.dll
MyApp                        <------- On Ubuntu, run this executable
MyApp.deps.json                       and you will see Hello World!
MyApp.dll
MyApp.pdb
MyApp.runtimeconfig.json
sosdocsunix.txt
System.AppContext.dll
System.Buffers.dll
System.Collections.Concurrent.dll
System.Collections.dll

...

C:\MyApp\project.json

{
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": "1.0.1"
      }
    }
  },
  "runtimes": {
    "ubuntu.14.04-x64" : {},
    "win10-x64" : {}
  }
}

C:\MyApp\Program.cs

public class Program
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine("Hello World!");
    }
}

Voir également

Ce document distingue les déploiements dépendants de la structure et autonomes.

20
Shaun Luttin

Il est à noter qu'avec le .netstandard2 +, il y a deux étapes requises:

  • Editez le fichier .csproj et ajoutez une ligne avec une liste des environnements d’exécution cibles:

<PropertyGroup>

<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>

<!-- Add this with the required runtimes -->
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers>

</ PropertyGroup>

  • Restaurer et créer l'application: dotnet restore && dotnet build -c release -r RUNTIME 

Où RUNTIME est l'un des environnements d'exécution répertoriés dans le fichier csproj.

Il est important de noter que vous ne pouvez pas faire cela sans la modification du fichier .csproj et l'appel de restauration Dotnet. Sinon, le runtime ne sera pas téléchargé depuis nuget et l'indicateur -r ... ne fonctionnera pas.

4
Doug

Vous voudrez peut-être aussi consulter dotnet-packaging . Il inclut un utilitaire de ligne de commande dotnet deb qui vous permet de créer un fichier .deb (c’est-à-dire un programme d’installation Ubuntu) que vous pouvez utiliser pour installer votre application sur Ubuntu. Cela devrait faciliter le déploiement pour vous.

Pour commencer, vous devez d’abord ajouter cette section à votre fichier .csproj:

<ItemGroup>
  <PackageReference Include="Packaging.Targets" Version="0.1.45" />
  <DotNetCliToolReference Include="dotnet-deb" Version="0.1.45" />
<ItemGroup>

Ensuite, exécutez dotnet restore et dotnet deb -c Release -r ubuntu.18.04-x64 -f netcoreapp2.0. Cela créera un fichier .deb que vous pourrez utiliser pour déployer votre application sur Ubuntu.

0
Frederik Carlier