Открытый .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}");
    }
}
           
 Русский