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.
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.
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!");
}
}
Ce document distingue les déploiements dépendants de la structure et autonomes.
Il est à noter qu'avec le .netstandard2 +, il y a deux étapes requises:
<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>
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.
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.