API de Gerenciamento de Projetos .NET de código aberto para lidar com projetos no Redmine

A principal biblioteca de gerenciamento de projetos C# .NET permite que desenvolvedores criem, leiam, manipulem e convertam arquivos de projeto para outros formatos como MPP, MPT, XML, XER, PMXML e muitos mais.

O que é MPXJ.NET?

Gerenciar dados de projetos frequentemente significa lidar com uma variedade de formatos de arquivos de ferramentas como Microsoft Project, Primavera P6 e outras. Se você é um desenvolvedor .NET que deseja ler, gravar e manipular dados de projetos programaticamente sem ficar preso a uma única plataforma, o MPXJ.NET é a poderosa biblioteca de código aberto que você estava procurando. A biblioteca inclui vários recursos importantes para trabalhar com arquivos de gerenciamento de projetos, como criar novos projetos, ler arquivos de projetos existentes, converter entre formatos, manipular dados de cronograma, trabalhar com recursos e atribuições, tudo de forma programática.

MPXJ.NET é um wrapper .NET de código aberto em torno da biblioteca Java MPXJ (gerenciada por Jon Iles). Ele permite que desenvolvedores .NET — C#, VB.NET, etc. — leiam, escrevam e manipulem arquivos de cronograma de projetos usando tipos e convenções idiomáticas de C#. A biblioteca MPXJ suporta muitos formatos de cronograma e projeto, como MPP, MPX, MSPDI XML, XER, bancos de dados P6, Planner XML, etc. Embora o MPXJ seja originalmente baseado em Java, o MPXJ.Net o encapsula e apresenta convenções C# (propriedades em vez de getters/setters Java; convenções de nomenclatura .NET), de modo que se sente natural no código .NET. Seja agregando dados para um portfólio empresarial, realizando verificações de qualidade em cronogramas ou construindo uma ponte entre seu CRM e as ferramentas do seu PMO, o MPXJ.Net fornece a base confiável e de alto desempenho que você precisa.

Previous Next

Começando com MPXJ.NET

A forma recomendada de instalar o MPXJ.NET é via NuGet. Por favor, use os seguintes comandos para uma instalação tranquila.

Instalar MPXJ.NET via NuGet

NuGet\Install-Package MPXJ.Net -Version 14.5.2

Você pode baixá-lo diretamente da página do GitHub

Criar e Manipular Projetos via .NET

O MPXJ.NET de código aberto oferece vários recursos importantes para manipular arquivos de projeto em aplicações .NET. Além da leitura, você pode criar novos arquivos de projeto do zero: definir propriedades do projeto (título, autor, data de início), adicionar calendários e exceções, adicionar tarefas (com durações, datas de início, campos numéricos), adicionar recursos e atribuições, criar dependências (a tarefa A precede a tarefa B) e, em seguida, salvar em um formato de arquivo (por exemplo, MSPDI ou MPX) que pode ser aberto pelo MS Project ou outras ferramentas. Aqui está um exemplo simples que demonstra como criar um novo projeto em aplicações .NET.

Como criar um novo projeto e gravá-lo em formato XML via biblioteca .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}");
}

Leitura Universal de Arquivos de Projeto via C#

A principal força da biblioteca MPXJ.NET é sua capacidade de carregar e ler uma grande variedade de formatos com uma API simples e consistente. A biblioteca inclui suporte para detectar automaticamente o formato do arquivo com base na extensão e no conteúdo do arquivo. O método Read retorna um objeto ProjectFile, que é o contêiner raiz para todas as demais entidades do projeto, como tarefas, recursos e atribuições. Esse padrão simples funciona de forma idêntica para um arquivo XER, um arquivo XML ou qualquer outro formato suportado. O exemplo a seguir mostra como executá‑lo com facilidade.

Como carregar e ler um arquivo de projeto MPP via API .NET?

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}");
}

           

Conversão de Arquivos de Projeto via API .NET

O MPXJ.NET de código aberto inclui suporte completo para converter arquivos de projeto em outros formatos de arquivo dentro de aplicações .NET. Devido à sua capacidade multi-formato, o MPXJ.NET é frequentemente usado para converter arquivos de projeto de um formato para outro em aplicações .NET. Por exemplo: ler um arquivo .MPP e, em seguida, gravar em .MPX ou .MSPDI ou até mesmo XER/PMXML (dependendo do suporte). O README fornece um exemplo de conversão.

Como ler e converter um arquivo de projeto dentro de aplicativos .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}");
        }
    }
}
           

Acessando Tarefas e Hierarquia do Projeto

Projetos são compostos por tarefas, e o MPXJ.NET permite percorrer toda a Estrutura Analítica do Projeto (EAP). A biblioteca oferece vários recursos para manipular tarefas e dados de projetos, como listar todas as tarefas do projeto, visualizar o resumo das tarefas, duração das tarefas, início e término de uma tarefa, percentual concluído das tarefas e muito mais. O exemplo a seguir demonstra como os desenvolvedores podem iterar por todas as tarefas usando comandos .NET.

Como percorrer todas as tarefas do projeto via API C#?

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}");
    }
}
           
 Português