Dot.Blog

Consulting DotNet C#, XAML, WinUI, WPF, MAUI, IA

Industrialiser une solution .NET modulaire sans dépendance au cloud

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

  1. Dépendances en local uniquement

Dans chaque .csproj, évitez les SDK distants :

<RestoreSources>$(SolutionDir)\packages</RestoreSources>

Mettez vos packages NuGet dans un dossier ./packages.

  1. 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

  1. Compilation → bin\Release
  2. Compression .zip
  3. Optionnel : générer un hash SHA256 ou une signature
  4. 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 !

GitHub Code Quality : la qualité du code ne se résume pas à ajouter de l’IA dans la pull request

GitHub Code Quality est désormais disponible de manière générale. Le produit combine analyse CodeQL, détection assistée par IA, couverture de tests, quality gates et Copilot Autofix. L’ensemble paraît cohérent, mais ne prouve ni une meilleure maintenabilité ni un retour sur investissement. Pour décider, il faut mesurer le bruit, les défauts réellement évités, le temps de cycle et le coût complet.Plus...