Open source .NET Projectbeheer API om projecten in Redmine te beheren

Leidende C# .NET Project Management Library stelt ontwikkelaars in staat om projectbestanden te maken, lezen, manipuleren en converteren naar andere formaten zoals MPP, MPT, XML, XER, PMXML en nog veel meer.

Wat is MPXJ.NET?

Het beheren van projectgegevens betekent vaak worstelen met een veelheid aan bestandsformaten van tools zoals Microsoft Project, Primavera P6 en andere. Als je een .NET-ontwikkelaar bent die projectgegevens programmatisch wil lezen, schrijven en manipuleren zonder vast te zitten aan één platform, is MPXJ.NET de krachtige, open‑source bibliotheek waar je naar op zoek bent. De bibliotheek bevat verschillende belangrijke functies voor het werken met projectmanagementbestanden, zoals het aanmaken van nieuwe projecten, het lezen van bestaande projectbestanden, het converteren tussen formaten, het manipuleren van planningsgegevens, het werken met resources en toewijzingen, programmatisch.

MPXJ.NET is een open-source .NET wrapper rond de Java-bibliotheek MPXJ (Beheerd door Jon Iles). Het stelt .NET-ontwikkelaars—C#, VB.NET, enz.—in staat om project‑planning bestanden te lezen, schrijven en manipuleren met idiomatische C#-typen en conventies. De MPXJ-bibliotheek ondersteunt vele planning‑ en projectformaten zoals MPP, MPX, MSPDI XML, XER, P6-databases, Planner XML, enz. Hoewel MPXJ oorspronkelijk Java‑gebaseerd is, wikkelt MPXJ.Net het in en presenteert C#‑conventies (eigenschappen in plaats van Java‑getters/setters; .NET‑naamgevingsconventies) zodat het natuurlijk aanvoelt in .NET‑code. Of u nu gegevens aggregeert voor een enterprise‑portfolio, kwaliteitscontroles uitvoert op planningen, of een brug bouwt tussen uw CRM en de tools van uw PMO, MPXJ.Net biedt de betrouwbare, high‑performance basis die u nodig heeft.

Previous Next

Aan de slag met MPXJ.NET

De aanbevolen manier om MPXJ.NET te installeren is via NuGet. Gebruik alstublieft de volgende commando's voor een soepele installatie.

Installeer MPXJ.NET via NuGet

NuGet\Install-Package MPXJ.Net -Version 14.5.2

U kunt het rechtstreeks downloaden van GitHub-pagina

Projecten maken en manipuleren via .NET

De open source MPXJ.NET biedt verschillende belangrijke functies voor het verwerken van projectbestanden binnen .NET-toepassingen. Naast het lezen kun je nieuwe projectbestanden vanaf nul maken: projecteigenschappen definiëren (titel, auteur, startdatum), kalenders en uitzonderingen toevoegen, taken toevoegen (met duur, startdatums, numerieke velden), resources en toewijzingen toevoegen, afhankelijkheden creëren (taak A gaat vooraf aan taak B), en vervolgens opslaan in een bestandsformaat (bijv. MSPDI of MPX) dat geopend kan worden door MS Project of andere tools. Hier is een eenvoudig voorbeeld dat laat zien hoe je een nieuw project maakt binnen .NET-toepassingen.

Hoe maak je een nieuw project en schrijf je het in XML-formaat via .NET-bibliotheek?

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}");
}

Universeel projectbestanden lezen via C#

De primaire sterkte van de MPXJ.NET-bibliotheek is haar vermogen om een groot aantal formaten te laden en te lezen met een eenvoudige, consistente API. De bibliotheek bevat ondersteuning voor het automatisch detecteren van het bestandsformaat op basis van de extensie en de inhoud van het bestand. De Read-methode retourneert een ProjectFile-object, dat de hoofdcontainer is voor alle andere projectentiteiten zoals taken, resources en toewijzingen. Dit eenvoudige patroon werkt identiek voor een XER-bestand, een XML-bestand of elk ander ondersteund formaat. Het volgende voorbeeld laat zien hoe je dit moeiteloos kunt uitvoeren.

Hoe laad en lees je een MPP-projectbestand via .NET API?

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}");
}

           

Conversie van projectbestanden via .NET API

De open‑source MPXJ.NET biedt volledige ondersteuning voor het converteren van projectbestanden naar andere ondersteunde bestandsformaten binnen .NET‑toepassingen. Vanwege zijn multi‑formatcapaciteit wordt MPXJ.NET vaak gebruikt om projectbestanden van het ene formaat naar het andere te converteren binnen .NET‑toepassingen. Bijvoorbeeld: lees een .MPP‑bestand en schrijf vervolgens naar .MPX of .MSPDI of zelfs XER/PMXML (afhankelijk van de ondersteuning). De README bevat een voorbeeld van conversie.

Hoe lees en converteer je een projectbestand binnen .NET-apps?

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}");
        }
    }
}
           

Toegang tot projecttaken en hiërarchie

Projecten bestaan uit taken, en MPXJ.NET stelt je in staat om de volledige Work Breakdown Structure (WBS) te doorlopen. De bibliotheek ondersteunt diverse functies voor het behandelen van projecttaken en -gegevens, zoals het opsommen van alle taken in het project, een overzicht van taken weergeven, de duur, start- en einddatum van een taak, het percentage voltooid van een taak, en nog veel meer. Het volgende voorbeeld toont hoe ontwikkelaars door alle taken kunnen itereren met .NET‑commando's.

Hoe doorloop je alle taken van een project via de C# API?

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}");
    }
}
           
 Dutch