API การจัดการโครงการ .NET แบบเปิดแหล่งที่มาสำหรับจัดการโครงการใน Redmine

ไลบรารีการจัดการโครงการ C# .NET ชั้นนำช่วยให้นักพัฒนาสามารถสร้าง, อ่าน, จัดการและแปลงไฟล์โครงการเป็นรูปแบบอื่น ๆ เช่น MPP, MPT, XML, XER, PMXML และอื่น ๆ อีกมากมาย

MPXJ.NET คืออะไร?

การจัดการข้อมูลโครงการมักหมายถึงการต่อสู้กับรูปแบบไฟล์หลายประเภทจากเครื่องมือต่าง ๆ เช่น Microsoft Project, Primavera P6 และอื่น ๆ หากคุณเป็นนักพัฒนา .NET ที่ต้องการอ่าน เขียน และจัดการข้อมูลโครงการโดยโปรแกรมโดยไม่ต้องผูกติดกับแพลตฟอร์มเดียว MPXJ.NET คือไลบรารีโอเพ่นซอร์สที่ทรงพลังซึ่งคุณกำลังมองหา ไลบรารีนี้ได้รวมคุณลักษณะสำคัญหลายอย่างสำหรับการทำงานกับไฟล์การจัดการโครงการ เช่น การสร้างโครงการใหม่ การอ่านไฟล์โครงการที่มีอยู่ การแปลงระหว่างรูปแบบ การจัดการข้อมูลกำหนดเวลา การทำงานกับทรัพยากรและการมอบหมายงานโดยโปรแกรม

MPXJ.NET เป็น wrapper แบบโอเพนซอร์สสำหรับ .NET ที่ห่อหุ้มไลบรารี Java MPXJ (จัดการโดย Jon Iles) มันช่วยให้นักพัฒนา .NET—C#, VB.NET ฯลฯ—สามารถอ่าน เขียน และจัดการไฟล์ตารางโครงการโดยใช้ประเภทและแนวปฏิบัติของ C# อย่างเป็นธรรมชาติ ไลบรารี MPXJ รองรับรูปแบบตารางและโครงการหลายประเภท เช่น MPP, MPX, MSPDI XML, XER, ฐานข้อมูล P6, Planner XML ฯลฯ แม้ว่า MPXJ จะเป็น Java ดั้งเดิม MPXJ.Net ห่อหุ้มและนำเสนอแนวปฏิบัติของ C# (properties แทน getter/setter ของ 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 ให้คุณเดินทางผ่านโครงสร้างการแบ่งงาน (Work Breakdown Structure - WBS) ทั้งหมด ไลบรารีสนับสนุนฟีเจอร์ต่าง ๆ สำหรับการจัดการงานและข้อมูลของโครงการ เช่น การแสดงรายการงานทั้งหมดในโครงการ, ดูสรุปงาน, ระยะเวลา (Duration) ของงาน, วันเริ่มต้นและสิ้นสุดของงาน, เปอร์เซ็นต์การเสร็จสมบูรณ์ของงาน, และอื่น ๆ อีกมาก ตัวอย่างต่อไปนี้แสดงให้เห็นว่าผู้พัฒนาสามารถวนลูปผ่านงานทั้งหมดโดยใช้คำสั่ง .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}");
    }
}
           
 ไทย