Åpen kildekode .NET prosjektstyrings-API for å håndtere prosjekter i Redmine
Ledende C# .NET prosjektstyringsbibliotek gjør det mulig for utviklere å opprette, lese, manipulere og konvertere prosjektfiler til andre formater som MPP, MPT, XML, XER, PMXML og mange flere.
Hva er MPXJ.NET?
Å håndtere prosjektdata betyr ofte at man må kjempe med en mengde filformater fra verktøy som Microsoft Project, Primavera P6 og andre. Hvis du er en .NET-utvikler som ønsker å lese, skrive og manipulere prosjektdata programmatisk uten å være låst til én plattform, er MPXJ.NET det kraftige, åpne kildekodebiblioteket du har lett etter. Biblioteket inneholder flere viktige funksjoner for å arbeide med prosjektstyringsfiler, som å opprette nye prosjekter, lese eksisterende prosjektfiler, konvertere mellom formater, manipulere tidsplandata, arbeide med ressurser og oppdrag, programmatisk.
MPXJ.NET er en åpen kildekode .NET-omslag rundt Java-biblioteket MPXJ (administrert av Jon Iles). Det gjør det mulig for .NET-utviklere—C#, VB.NET osv.—å lese, skrive og manipulere prosjektplanleggingsfiler ved hjelp av idiomatiske C#-typer og konvensjoner. MPXJ-biblioteket støtter mange planleggings- og prosjektformater som MPP, MPX, MSPDI XML, XER, P6-databaser, Planner XML osv. Selv om MPXJ opprinnelig er Java-basert, pakker MPXJ.Net det inn og presenterer C#-konvensjoner (egenskaper i stedet for Java-gettere/settere; .NET-navnekonvensjoner) slik at det føles naturlig i .NET-kode. Enten du samler data for en bedriftsportefølje, utfører kvalitetssjekker på tidsplaner, eller bygger en bro mellom CRM-systemet ditt og PMO-verktøyene, gir MPXJ.Net det pålitelige, høyytelsesgrunnlaget du trenger.
Kom i gang med MPXJ.NET
Den anbefalte måten å installere MPXJ.NET på er via NuGet. Vennligst bruk følgende kommandoer for en smidig installasjon.
Installer MPXJ.NET via NuGet
NuGet\Install-Package MPXJ.Net -Version 14.5.2
Du kan laste ned den direkte fra GitHub-siden
Opprett og manipuler prosjekter via .NET
Den åpne kildekoden MPXJ.NET har flere viktige funksjoner for håndtering av prosjektfiler i .NET-applikasjoner. I tillegg til lesing kan du opprette nye prosjektfiler fra bunnen av: definere prosjekt‑egenskaper (tittel, forfatter, startdato), legge til kalendere og unntak, legge til oppgaver (med varigheter, startdatoer, numeriske felter), legge til ressurser og tildelinger, opprette avhengigheter (oppgave A går foran oppgave B), og deretter lagre til et filformat (f.eks. MSPDI eller MPX) som kan åpnes av MS Project eller andre verktøy. Her er et enkelt eksempel som demonstrerer hvordan du oppretter et nytt prosjekt i .NET-applikasjoner.
Hvordan opprette et nytt prosjekt og skrive det i XML-format via .NET-biblioteket?
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}");
}
Universell lesing av prosjektfiler via C#
Hovedstyrken til MPXJ.NET-biblioteket er evnen til å laste inn og lese et stort antall formater med et enkelt, konsistent API. Biblioteket har inkludert støtte for automatisk å oppdage filformatet basert på filens filtype og innhold. Read‑metoden returnerer et ProjectFile‑objekt, som er rotbeholderen for alle andre prosjekt‑enheter som oppgaver, ressurser og tildelinger. Dette enkle mønsteret fungerer identisk for en XER‑fil, en XML‑fil eller ethvert annet støttet format. Det følgende eksemplet viser hvordan du gjør det med letthet.
Hvordan laste inn og lese en MPP-prosjektfil 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}");
}
Konvertering av prosjektfiler via .NET API
Den åpne kildekoden MPXJ.NET har inkludert full støtte for å konvertere prosjektfiler til andre støttede filformater i .NET-applikasjoner. På grunn av sin multi‑format kapasitet blir MPXJ.NET ofte brukt til å konvertere prosjektfiler fra ett format til et annet i .NET-applikasjoner. For eksempel: les .MPP‑fil, og skriv deretter til .MPX eller .MSPDI eller til og med XER/PMXML (avhengig av støtte). README gir et eksempel på konvertering.
Hvordan lese og konvertere prosjektfil i .NET-applikasjoner?
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}");
}
}
}
Tilgang til prosjektoppgaver og hierarki
Prosjekter består av oppgaver, og MPXJ.NET lar deg traversere hele Work Breakdown Structure (WBS). Biblioteket støtter ulike funksjoner for håndtering av prosjektoppgaver og data, som å liste alle oppgaver i prosjektet, vise oppgavesammendrag, oppgavens varighet, start og slutt for en oppgave, prosent fullført av en oppgave, og mye mer. Følgende eksempel demonstrerer hvordan utviklere kan iterere gjennom alle oppgaver ved hjelp av .NET‑kommandoer.
Hvordan iterere gjennom alle prosjektets oppgaver via 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}");
}
}