API .NET open source de gestion de projet pour gérer les projets dans Redmine

La bibliothèque de gestion de projets C# .NET de premier plan permet aux développeurs de créer, lire, manipuler et convertir des fichiers de projet vers d’autres formats tels que MPP, MPT, XML, XER, PMXML, et bien d’autres.

Qu'est-ce que MPXJ.NET ?

Gestion des données de projet signifie souvent devoir jongler avec une multitude de formats de fichiers provenant d'outils tels que Microsoft Project, Primavera P6 et d'autres. Si vous êtes développeur .NET et que vous souhaitez lire, écrire et manipuler les données de projet de manière programmatique sans être enfermé dans une plateforme unique, MPXJ.NET est la bibliothèque puissante et open source que vous recherchiez. La bibliothèque comprend plusieurs fonctionnalités importantes pour travailler avec les fichiers de gestion de projet, telles que la création de nouveaux projets, la lecture de fichiers de projet existants, la conversion entre formats, la manipulation des données de planification, le travail avec les ressources et les affectations, de façon programmatique.

MPXJ.NET est un wrapper .NET open source autour de la bibliothèque Java MPXJ (géré par Jon Iles). Il permet aux développeurs .NET — C#, VB.NET, etc. — de lire, écrire et manipuler des fichiers de planification de projets en utilisant des types et conventions C# idiomatiques. La bibliothèque MPXJ prend en charge de nombreux formats de planification et de projet tels que MPP, MPX, MSPDI XML, XER, bases de données P6, Planner XML, etc. Bien que MPXJ soit à l'origine basé sur Java, MPXJ.Net l'encapsule et présente les conventions C# (propriétés plutôt que getters/setters Java ; conventions de nommage .NET) de sorte qu'il se sente naturel dans le code .NET. Que vous agrégiez des données pour un portefeuille d'entreprise, effectuiez des contrôles de qualité sur les plannings, ou construisiez un pont entre votre CRM et les outils de votre PMO, MPXJ.Net fournit la base fiable et haute performance dont vous avez besoin.

Previous Next

Commencer avec MPXJ.NET

La façon recommandée d'installer MPXJ.NET est via NuGet. Veuillez utiliser les commandes suivantes pour une installation fluide.

Installer MPXJ.NET via NuGet

NuGet\Install-Package MPXJ.Net -Version 14.5.2

Vous pouvez le télécharger directement depuis la page GitHub

Créer et manipuler des projets via .NET

Le MPXJ.NET open source offre plusieurs fonctionnalités importantes pour la gestion des fichiers de projet dans les applications .NET. Au-delà de la lecture, vous pouvez créer de nouveaux fichiers de projet à partir de zéro : définir les propriétés du projet (titre, auteur, date de début), ajouter des calendriers et des exceptions, ajouter des tâches (avec durées, dates de début, champs numériques), ajouter des ressources et des affectations, créer des dépendances (la tâche A précède la tâche B), puis enregistrer dans un format de fichier (par ex., MSPDI ou MPX) qui peut être ouvert par MS Project ou d'autres outils. Voici un exemple simple qui montre comment créer un nouveau projet dans les applications .NET.

Comment créer un nouveau projet et l'écrire au format XML via la bibliothèque .NET ?

using Net.Sf.Mpxj;
using Net.Sf.Mpxj.Write;
using System;

// Create a new, empty project file
ProjectFile project = new ProjectFile();

// Set basic project properties
project.Name = "My New MPXJ-Generated Project";
project.StartDate = DateTime.Now;

// Add tasks
Task task1 = project.AddTask();
task1.Name = "Task 1";
task1.Duration = project.GetDuration(8, TimeUnit.Hours); // 1 day
task1.Start = DateTime.Now;

Task task2 = project.AddTask();
task2.Name = "Task 2 (Child of Task 1)";
task2.Duration = project.GetDuration(16, TimeUnit.Hours); // 2 days
task2.Start = DateTime.Now.AddDays(1);
// Make task2 a child of task1 by setting the outline level
task2.OutlineLevel = 1;

// Create a writer for the desired output format
ProjectWriter writer = new MicrosoftProjectWriter();

try
{
    // Write the project to an XML file (compatible with MS Project)
    writer.Write(project, "C:\\Projects\\MyNewProject.xml");
    Console.WriteLine("Project file written successfully!");
}
catch (Exception ex)
{
    Console.WriteLine($"Failed to write file: {ex.Message}");
}

Lecture universelle de fichiers de projet via C#

La principale force de la bibliothèque MPXJ.NET réside dans sa capacité à charger et lire un grand nombre de formats grâce à une API simple et cohérente. La bibliothèque inclut la prise en charge de la détection automatique du format de fichier en fonction de son extension et de son contenu. La méthode Read renvoie un objet ProjectFile, qui est le conteneur racine de toutes les autres entités du projet telles que les tâches, les ressources et les affectations. Ce modèle simple fonctionne de la même manière pour un fichier XER, un fichier XML ou tout autre format pris en charge. L'exemple suivant montre comment l'exécuter facilement.

Comment charger et lire un fichier de projet MPP via l'API .NET ?

using Net.Sf.Mpxj;
using Net.Sf.Mpxj.Read;

// Create a ProjectReader instance.
// The UniversalProjectReader intelligently determines the file type.
ProjectReader reader = new UniversalProjectReader();

try
{
    // Read the project file. This one line of code is all you need.
    ProjectFile project = reader.Read("C:\\Projects\\MySchedule.mpp");

    // Now you have access to all project data!
    Console.WriteLine($"Project Name: {project.Name}");
    Console.WriteLine($"Start Date: {project.StartDate}");
}
catch (Exception ex)
{
    Console.WriteLine($"Failed to read file: {ex.Message}");
}

           

Conversion de fichiers de projet via l'API .NET

Le MPXJ.NET open source inclut une prise en charge complète de la conversion des fichiers de projet vers d'autres formats de fichiers pris en charge au sein des applications .NET. En raison de sa capacité multi-format, MPXJ.NET est souvent utilisé pour convertir les fichiers de projet d'un format à un autre dans les applications .NET. Par exemple : lire un fichier .MPP, puis écrire en .MPX ou .MSPDI ou même XER/PMXML (selon le support). Le README fournit un exemple de conversion.

Comment lire et convertir un fichier de projet dans les applications .NET ?

using System;
using MPXJ.Net;

namespace ConvertProject
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = "LegacyProject.mpp";
            string output = "ConvertedProject.mpx";

            // Read using universal reader
            var proj = new UniversalProjectReader().Read(input);

            // Write using universal writer to MPX format
            new UniversalProjectWriter(FileFormat.MPX).Write(proj, output);

            Console.WriteLine($"Converted {input} → {output}");
        }
    }
}
           

Accéder aux tâches et à la hiérarchie du projet

Les projets sont composés de tâches, et MPXJ.NET vous permet de parcourir l'intégralité de la structure de répartition du travail (WBS). La bibliothèque prend en charge diverses fonctionnalités pour gérer les tâches et les données des projets, telles que la liste de toutes les tâches du projet, la vue récapitulative des tâches, la durée des tâches, le début et la fin d'une tâche, le Percentage0Complete des tâches, et bien plus encore. L'exemple suivant montre comment les développeurs peuvent itérer sur toutes les tâches à l'aide de commandes .NET.

Comment parcourir toutes les tâches d'un projet via l'API C# ?

using Net.Sf.Mpxj;

// ... (Assume 'project' is a loaded ProjectFile object)

Console.WriteLine("Tasks in the project:");
foreach (Task task in project.Tasks)
{
    // Calculate the indentation for a hierarchical view
    string indent = new string(' ', task.OutlineLevel * 2);

    Console.WriteLine($"{indent}ID: {task.ID}, Name: {task.Name}, " +
                      $"Duration: {task.Duration}, " +
                      $"Start: {task.Start}, Finish: {task.Finish}");

    // Access specific properties
    if (task.PercentageComplete != null && task.PercentageComplete > 0)
    {
        Console.WriteLine($"{indent}  -> % Complete: {task.PercentageComplete}");
    }
}
           
 Français