Відкрита .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‑геттерів/сеттерів; .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. Окрім читання, ви можете створювати нові файли проектів з нуля: визначати властивості проекту (назва, автор, дата початку), додавати календарі та виключення, додавати завдання (з тривалістю, датами початку, числовими полями), додавати ресурси та призначення, створювати залежності (завдання A передує завданню 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}");
    }
}
           
 Українська