Créer une solution modulaire .NET bien structurée, réutilisable, testable et évolutive sans s’appuyer sur Azure, GitHub Actions, DevOps ou tout service distant. Impossible ? Non ! [more@ L’industrialisation reste 100% locale, pour répondre à des contraintes de confidentialité, de sécurité, ou de simplicité.
🧱 Contexte
Vous développez une application desktop, un moteur métier, ou un outil CLI. Vous souhaitez :
- séparer clairement les responsabilités
- éviter l’enchevêtrement des projets
- tester facilement chaque module
- packager sans cloud
🏗️ Architecture recommandée
/MonAppSolution
├── MonApp.Core // Logique métier, pur C#
├── MonApp.Data // Accès SQLite, LiteDB, ou fichiers
├── MonApp.Api // Kestrel local ou couche REST embarquée
├── MonApp.UI.WinUI // UI native Windows
├── MonApp.Tests // Tests unitaires + intégration
└── build/ // Scripts, templates, outils
Chaque projet est un .csproj indépendant. Référencement clair, pas de dépendance circulaire.
🧰 Étapes clés d’industrialisation
- Dépendances en local uniquement
Dans chaque .csproj, évitez les SDK distants :
<RestoreSources>$(SolutionDir)\packages</RestoreSources>
Mettez vos packages NuGet dans un dossier ./packages.
- Scripts de build locaux
Fichier build.ps1 (PowerShell) :
dotnet restore
dotnet build -c Release
dotnet test
dotnet publish MonApp.UI.WinUI -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true
🧪 Tests automatisés locaux
Ajoutez un projet de tests :
dotnet new xunit -n MonApp.Tests
dotnet add MonApp.Tests reference MonApp.Core
Exemple de test :
[Fact]
public void Prix_Calcule_Correctement()
{
var service = new CalculService();
Assert.Equal(42, service.Calculer());
}
📦 Packaging et livraison manuelle
- Compilation → bin\Release
- Compression .zip
- Optionnel : générer un hash SHA256 ou une signature
- Distribution par clé USB, réseau, intranet, QR code, etc.
✅ Avantages
|
Point fort
|
Détail
|
|
100% maîtrisé
|
Aucun service distant, 100% en LAN
|
|
Compatible avec air-gap
|
Peut être utilisé dans un environnement sans Internet
|
|
Portable
|
Tous les outils tournent avec dotnet CLI
|
|
Adaptable aux projets open-source ou propriétaires
|
|
💡 Astuces supplémentaires
- Utilisez Directory.Build.props pour centraliser vos options de build.
- Documentez vos modules dans un README.md par projet.
- Automatisez l’analyse statique avec dotnet format, dotnet build --warnaserror, Roslyn analyzers.
Conclusion
Même sans Azure, sans GitHub et sans CI/CD cloud, il est tout à fait possible de produire, tester, packager et livrer une solution .NET professionnelle. Cette approche convient parfaitement à de nombreuses entreprises industrielles ou organismes publics. Ne vous laissez pas piéger par des porteurs de solutions complexes et coûteuses. Faire simple est souvent la touche des vrais professionnels...
Stay Tuned !