.NET CLI pour déployer un site web localement
Vue d’ensemble
Si comme moi, il vous arrive de développer des outils internes pour votre équipe de développeurs,
peut-être serez-vous intéressé de savoir comment créer “manuellement” un package dotnet tool.
Cet article vous explique cela étapes par étapes.
Bien dévidemment, pour des projets Console, vous pouvez ajouter les paramètres
<PackAsTool>
et<ToolCommandName>
dans votre csproj. Mais pour un site web, vous avez besoin de toute une série de fichiers qui sont générés uniquement lors de la publication.
1. Créez votre site internet
D’abord vous devez disposer d’un site internet.
Vous pouvez en créer rapidement un exemple via dotnet new blazorserver
.
Plus tard, nous allons publier ce site web via dotnet publish -c Release -o ./bin/Publish
afin de disposer du site web dans un sous dosser bin/publish
.
2. Configurez votre projet
Vous devez ajouter ces deux fichiers pour configurer votre projet pour une sortie en package DotNet Tool.
-
Ajoutez ce fichier
DotnetTool.nuspec
à la racine de votre projet.
Adapaptez l’id
avec le nom de votre outil (ainsi que le numéro de version de dotnetnet9.0
que vous utilisez).<package> <metadata> <id>my-tool</id> <version>1.0.0</version> <authors>Denis Voituron</authors> <owners>Denis Voituron</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description> Add your description here. </description> <tags>tool</tags> <packageTypes> <packageType name="DotnetTool" /> </packageTypes> </metadata> <files> <file src="bin\publish\**\*.*" target="tools\net9.0\any" /> <file src="DotnetToolSettings.xml" target="tools\net9.0\any\DotnetToolSettings.xml" /> </files> </package>
-
Ajoutez également ce fichier
DotnetToolSettings.xml
à la racine de votre projet.
Ce fichier précise quel point d’entrée (DLL ou EXE) démarrer lorsque la commandemy-tool
sera encodée.<?xml version="1.0" encoding="utf-8"?> <DotNetCliTool Version="1"> <Commands> <Command Name="my-tool" EntryPoint="MyApplication1.dll" Runner="dotnet" /> </Commands> </DotNetCliTool>
3. Adapter votre Program.cs
Par défault, votre projet devrait démarrer avec le port 5000 avec un dossier des Assets wwwroot
référencé à partir du dossier courant.
Vous pouvez adapter cela via ce morceau de code à placer dans votre classe Program
Vous pouvez également démarrer automatiquement le navigateur par défaut pour afficher immédiatement votre site web.
public class Program
{
public static void Main(string[] args)
{
#if (RELEASE)
var wwwRootDirectory = Path.Combine(AppContext.BaseDirectory, "wwwroot");
var options = new WebApplicationOptions
{
WebRootPath = wwwRootDirectory,
Args = args,
};
var builder = WebApplication.CreateBuilder(options);
builder.WebHost.ConfigureKestrel(serverOptions =>
{
serverOptions.ListenAnyIP(6789, listenOptions => // 👈 Set a specifi port number
{
// Uses the trusted dev cert automatically
listenOptions.UseHttps();
});
});
#else
var builder = WebApplication.CreateBuilder(args);
#endif
// Keep the existing code
// ...
var app = builder.Build();
// Keep the existing code
// ...
// Launch browser only in release mode and when running locally
#if RELEASE
if (OperatingSystem.IsWindows() || OperatingSystem.IsLinux() || OperatingSystem.IsMacOS())
{
var url = "https://localhost:6789"; // or your configured URL
try
{
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo
{
FileName = url,
UseShellExecute = true
});
}
catch (Exception ex)
{
Console.WriteLine($"Failed to launch browser: {ex.Message}");
}
}
#endif
app.Run();
}
}
4. Créer le package DotNet Tool
- Ouvez une console dans le dossier de votre projet et exécutez la commande de publication.
dotnet publish -c Release -o ./bin/Publish
Vous pouvez également supprimer les dossiers ‘bin’ et ‘obj’ avant la compilation afin de garantir une compilation propre.
-
Ensuite, exécuter cette commande NuGet pour créer le package nupkg.
nuget pack DotnetTool.nuspec -OutputDirectory ./bin/
Le fichier
MyApplication1.x.x.x.nupkg
sera généré dans le sous-dossierbin
Il ne vous reste plus qu’à le pousser vers un flux NuGet interne à votre entreprise ou sur NuGet.org s’il est public.
5. Installer l’outil avant de le publier
- Exécutez la commande suivante pour installer un certificat de développement auto-signé “localhost” (installation silencieuse).
dotnet dev-certs https --trust
- Installez l’outil localement via cette commande.
dotnet tool install --global --add-source ./bin my-tool
Le paramètre
--add-source ./bin
spécifie l’emplacement du package à installer - Tester votre nouvelle commande, ce qui devrait démarrer un site web et ouvrir le navigateur.
my-tool