Отворен код .NET API за управление на проекти, за работа с проекти в Redmine

Водеща библиотека за управление на проекти C# .NET позволява на разработчиците да създават, четат, манипулират и конвертират проектни файлове в други формати като MPP, MPT, XML, XER, PMXML и много други.

Какво е MPXJ.NET?

Управлението на проектни данни често означава борба с множество файлови формати от инструменти като Microsoft Project, Primavera P6 и други. Ако сте .NET разработчик, който иска да чете, записва и манипулира проектни данни програмно, без да е заключен в една платформа, MPXJ.NET е мощната, отворена библиотека, която търсехте. Библиотеката включва няколко важни функции за работа с файлове за управление на проекти, като създаване на нови проекти, четене на съществуващи проектни файлове, конвертиране между формати, манипулиране на графици, работа с ресурси и назначения, програмно.

MPXJ.NET е отворен .NET обвивка около Java библиотеката MPXJ (поддържана от Джон Айлс). Тя позволява на .NET разработчиците — C#, VB.NET и др. — да четат, записват и манипулират файлове с графици на проекти, използвайки идиоматични типове и конвенции на C#. Библиотеката MPXJ поддържа множество формати за графици и проекти, като MPP, MPX, MSPDI XML, XER, P6 бази данни, Planner XML и др. Въпреки че MPXJ първоначално е базирана на Java, MPXJ.Net я обвива и представя C# конвенции (свойства вместо Java getter/settter; .NET наименования), така че се усеща естествено в .NET код. Независимо дали агрегиране на данни за корпоративно портфолио, извършване на проверки за качество на графиците или изграждане на мост между вашия CRM и инструментите на вашия PMO, MPXJ.Net предоставя надеждната, високопроизводителна основа, от която се нуждаете.

Previous Next

Започване с MPXJ.NET

Препоръчителният начин за инсталиране на MPXJ.NET е чрез NuGet. Моля, използвайте следните команди за гладка инсталация.

Инсталиране на MPXJ.NET чрез NuGet

NuGet\Install-Package MPXJ.Net -Version 14.5.2

Можете да изтеглите директно от GitHub страница

Създаване и манипулиране на проекти чрез .NET

Отвореният код MPXJ.NET предоставя няколко важни функции за работа с проектни файлове в .NET приложения. Освен четенето, можете да създавате нови проектни файлове от нулата: да дефинирате свойства на проекта (заглавие, автор, начална дата), да добавяте календари и изключения, да добавяте задачи (с продължителности, начални дати, числови полета), да добавяте ресурси и назначения, да създавате зависимости (задача А предхожда задача B), и след това да запазвате във файлов формат (например MSPDI или MPX), който може да бъде отворен от MS Project или други инструменти. Ето прост пример, който демонстрира как да създадете нов проект в .NET приложения.

Как да създадете нов проект и да го запишете в XML формат чрез .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}");
}

Универсално четене на проектни файлове чрез C#

Основната сила на библиотеката MPXJ.NET е способността ѝ да зарежда и чете огромен брой формати с прост, последователен API. Библиотеката включва поддръжка за автоматично откриване на файловия формат въз основа на разширението и съдържанието на файла. Методът Read връща обект ProjectFile, който е кореновият контейнер за всички останали проектни елементи като задачи, ресурси и назначения. Този прост модел работи еднакво за XER файл, XML файл или който и да е друг поддържан формат. Следващият пример показва как да го изпълните лесно.

Как да заредите и прочетете MPP проектен файл чрез .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}");
}

           

Конвертиране на проектни файлове чрез .NET API

Отвореният код MPXJ.NET включва пълна поддръжка за конвертиране на проектни файлове в други поддържани формати във .NET приложения. Поради многото формати, MPXJ.NET често се използва за преобразуване на проектни файлове от един формат в друг във .NET приложения. Например: прочетете .MPP файл, след което го запишете като .MPX или .MSPDI или дори XER/PMXML (в зависимост от поддръжката). README предоставя пример за конвертиране.

Как да прочетете и конвертирате проектен файл в .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}");
        }
    }
}
           

Достъп до задачи и йерархия на проекта

Проектите се състоят от задачи, а MPXJ.NET ви позволява да обхождате цялата структура на разбивка на работата (WBS). Библиотеката поддържа различни функции за работа с проектни задачи и данни, като изброяване на всички задачи в проекта, преглед на обобщението на задачите, продължителност на задачите, начало и край на задача, процентно завършване на задачи и много други. Следният пример демонстрира как разработчиците могат да итерират през всички задачи, използвайки .NET команди.

Как да обхождате всички задачи на проекта чрез 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}");
    }
}
           
 Български