Öppen källkod .NET API för projektledning för att hantera projekt i Redmine
Ledande C# .NET-projektledningsbiblioteket gör det möjligt för utvecklare att skapa, läsa, manipulera och konvertera projektfiler till andra format som MPP, MPT, XML, XER, PMXML och många fler.
Vad är MPXJ.NET?
Att hantera projektdata innebär ofta att kämpa med en mängd olika filformat från verktyg som Microsoft Project, Primavera P6 och andra. Om du är en .NET‑utvecklare som vill läsa, skriva och manipulera projektdata programmässigt utan att vara låst till en enda plattform, är MPXJ.NET det kraftfulla, öppna källkods‑biblioteket du har letat efter. Biblioteket innehåller flera viktiga funktioner för att arbeta med projektstyrningsfiler, såsom att skapa nya projekt, läsa befintliga projektfiler, konvertera mellan format, manipulera schemaläggningsdata, arbeta med resurser och tilldelningar, programmässigt.
MPXJ.NET är ett open-source .NET‑wrapper runt Java‑biblioteket MPXJ (hanteras av Jon Iles). Det låter .NET‑utvecklare—C#, VB.NET osv.—läsa, skriva och manipulera projekt‑schemaläggningsfiler med idiomatiska C#‑typer och konventioner. MPXJ‑biblioteket stödjer många schema‑ och projektformat såsom MPP, MPX, MSPDI XML, XER, P6‑databaser, Planner XML osv. Även om MPXJ ursprungligen är Java‑baserat, omsluter MPXJ.Net det och presenterar C#‑konventioner (egenskaper snarare än Java‑getters/setters; .NET‑namngivningskonventioner) så det känns naturligt i .NET‑kod. Oavsett om du aggregerar data för en företagsportfölj, utför kvalitetskontroller på scheman, eller bygger en bro mellan ditt CRM och ditt PMO:s verktyg, tillhandahåller MPXJ.Net den pålitliga, högpresterande grunden du behöver.
Komma igång med MPXJ.NET
Det rekommenderade sättet att installera MPXJ.NET är via NuGet. Använd följande kommandon för en smidig installation.
Installera MPXJ.NET via NuGet
NuGet\Install-Package MPXJ.Net -Version 14.5.2
Du kan ladda ner den direkt från GitHub‑sidan
Skapa och manipulera projekt via .NET
Den öppna källkodsprojektet MPXJ.NET har tillhandahållit flera viktiga funktioner för att hantera projektfiler i .NET-applikationer. Utöver läsning kan du skapa nya projektfiler från grunden: definiera projektegenskaper (titel, författare, startdatum), lägga till kalendrar och undantag, lägga till uppgifter (med varaktigheter, startdatum, numeriska fält), lägga till resurser och tilldelningar, skapa beroenden (uppgift A föregår uppgift B) och sedan spara till ett filformat (t.ex. MSPDI eller MPX) som kan öppnas av MS Project eller andra verktyg. Här är ett enkelt exempel som visar hur man skapar ett nytt projekt i .NET-applikationer.
Hur skapar man ett nytt projekt och skriver 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 läsning av projektfiler via C#
Den främsta styrkan i MPXJ.NET-biblioteket är dess förmåga att ladda och läsa ett stort antal format med ett enkelt, konsekvent API. Biblioteket har inkluderat stöd för att automatiskt upptäcka filformatet baserat på filens filändelse och innehåll. Läs‑metoden returnerar ett ProjectFile‑objekt, som är rotbehållaren för alla andra projektenheter som uppgifter, resurser och tilldelningar. Detta enkla mönster fungerar identiskt för en XER‑fil, en XML‑fil eller något annat stödd format. Följande exempel visar hur man utför det med lätthet.
Hur laddar och läser man en MPP-projektfil 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 projektfiler via .NET API
Den öppna källkoden MPXJ.NET har inkluderat fullständigt stöd för att konvertera projektfiler till andra filformat i .NET-applikationer. På grund av dess multi-formatkapacitet används MPXJ.NET ofta för att konvertera projektfiler från ett format till ett annat i .NET-applikationer. Till exempel: läs .MPP-fil, skriv sedan till .MPX eller .MSPDI eller till och med XER/PMXML (beroende på stöd). README ger exempel på konvertering.
Hur läser och konverterar man projektfil i .NET-appar?
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}");
}
}
}
Åtkomst till projektuppgifter och hierarki
Projekt består av uppgifter, och MPXJ.NET låter dig gå igenom hela arbetsnedbrytningsstrukturen (WBS). Biblioteket stöder olika funktioner för hantering av projektuppgifter och data, såsom listning av alla uppgifter i projektet, visa uppgiftsöversikt, uppgiftens varaktighet, start och slut för en uppgift, procentuell färdigställandegrad för en uppgift, och mycket mer. Följande exempel visar hur utvecklare kan iterera genom alla uppgifter med .NET-kommandon.
Hur itererar man igenom alla projektuppgifter 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}");
}
}