Redmine 프로젝트를 처리하기 위한 오픈 소스 .NET 프로젝트 관리 API
선도적인 C# .NET 프로젝트 관리 라이브러리는 개발자가 프로젝트 파일을 만들고, 읽고, 조작하고 MPP, MPT, XML, XER, PMXML 등 다양한 형식으로 변환할 수 있도록 합니다.
MPXJ.NET이란 무엇입니까?
프로젝트 데이터를 관리한다는 것은 종종 Microsoft Project, Primavera P6 등과 같은 도구에서 나오는 다양한 파일 형식들을 다루어야 함을 의미합니다. 단일 플랫폼에 얽매이지 않고 프로그래밍 방식으로 프로젝트 데이터를 읽고, 쓰고, 조작하려는 .NET 개발자라면, MPXJ.NET은 여러분이 찾고 있던 강력한 오픈 소스 라이브러리입니다. 이 라이브러리는 새 프로젝트 생성, 기존 프로젝트 파일 읽기, 형식 간 변환, 일정 데이터 조작, 리소스 및 할당 작업 등을 포함한 프로젝트 관리 파일 작업을 위한 여러 중요한 기능을 제공하고 있습니다.
MPXJ.NET은 Java 라이브러리인 MPXJ(관리자: Jon Iles)를 .NET에서 사용할 수 있도록 만든 오픈 소스 .NET 래퍼입니다. 이를 통해 .NET 개발자(C#, VB.NET 등)는 관용적인 C# 타입과 관례를 사용하여 프로젝트 일정 파일을 읽고, 쓰고, 조작할 수 있습니다. MPXJ 라이브러리는 MPP, MPX, MSPDI XML, XER, P6 데이터베이스, Planner XML 등 다양한 일정 및 프로젝트 형식을 지원합니다. 원래 Java 기반이지만 MPXJ.Net은 이를 래핑하여 C# 관례(속성 대신 Java getter/setter; .NET 명명 규칙)를 제공하므로 .NET 코드에서 자연스럽게 사용할 수 있습니다. 기업 포트폴리오를 위한 데이터 집계, 일정에 대한 품질 검사, 혹은 CRM과 PMO 도구 간의 브릿지를 구축하든, MPXJ.Net은 신뢰할 수 있는 고성능 기반을 제공합니다.
MPXJ.NET 시작하기
MPXJ.NET을 설치하는 권장 방법은 NuGet을 이용하는 것입니다. 원활한 설치를 위해 다음 명령을 사용하십시오.
NuGet을 통해 MPXJ.NET 설치
NuGet\Install-Package MPXJ.Net -Version 14.5.2
MPXJ.NET을 직접 GitHub 페이지에서 다운로드할 수 있습니다.
.NET을 통해 프로젝트 생성 및 조작
오픈 소스 MPXJ.NET은 .NET 애플리케이션 내에서 프로젝트 파일을 처리하기 위한 여러 중요한 기능을 제공합니다. 읽기 기능을 넘어, 처음부터 새로운 프로젝트 파일을 생성할 수 있습니다: 프로젝트 속성(제목, 작성자, 시작 날짜)을 정의하고, 캘린더와 예외를 추가하며, 작업(기간, 시작 날짜, 숫자 필드 포함)을 추가하고, 리소스와 할당을 추가하고, 종속성(작업 A가 작업 B보다 먼저 수행)을 생성한 다음, MS Project 또는 다른 도구에서 열 수 있는 파일 형식(예: MSPDI 또는 MPX)으로 저장합니다. 여기에는 .NET 애플리케이션 내에서 새로운 프로젝트를 만드는 방법을 보여주는 간단한 예제가 있습니다.
.NET 라이브러리를 통해 새 프로젝트를 생성하고 XML 형식으로 작성하는 방법?
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 파일 또는 다른 지원 형식에서도 동일하게 작동합니다. 다음 예제는 이를 쉽게 수행하는 방법을 보여줍니다.
.NET API를 사용하여 MPP 프로젝트 파일을 로드하고 읽는 방법?
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}");
}
}