API متن باز .NET برای مدیریت پروژهها در Redmine
کتابخانه پیشرو مدیریت پروژه C# .NET به توسعهدهندگان امکان ایجاد، خواندن، دستکاری و تبدیل فایلهای پروژه به فرمتهای دیگر مانند MPP، MPT، XML، XER، PMXML و بسیاری موارد دیگر را میدهد.
MPXJ.NET چیست؟
مدیریت دادههای پروژه اغلب به معنای مقابله با تعداد زیادی از فرمتهای فایل از ابزارهایی مانند Microsoft Project، Primavera P6 و سایرین است. اگر شما یک توسعهدهنده .NET هستید که میخواهید دادههای پروژه را بهصورت برنامهنویسی بخوانید، بنویسید و دستکاری کنید بدون اینکه به یک پلتفرم واحد محدود شوید، MPXJ.NET کتابخانه قدرتمند و منبع باز است که بهدنبال آن بودید. این کتابخانه شامل چندین ویژگی مهم برای کار با فایلهای مدیریت پروژه است، از جمله ایجاد پروژههای جدید، خواندن فایلهای پروژه موجود، تبدیل بین فرمتها، دستکاری دادههای زمانبندی، کار با منابع و تخصیصها، بهصورت برنامهنویسی.
MPXJ.NET یک بستهبندی منبع باز .NET برای کتابخانه جاوا MPXJ (مدیریت شده توسط Jon Iles) است. این امکان را به توسعهدهندگان .NET—C#، VB.NET و غیره—میدهد تا فایلهای برنامهریزی پروژه را با استفاده از انواع و قراردادهای بومی C# بخوانند، بنویسند و دستکاری کنند. کتابخانه MPXJ از بسیاری از فرمتهای برنامهریزی و پروژه مانند MPP، MPX، MSPDI XML، XER، پایگاههای داده P6، Planner XML و غیره پشتیبانی میکند. اگرچه MPXJ در اصل مبتنی بر جاوا است، MPXJ.Net آن را میپیچاند و قراردادهای C# (ویژگیها به جای getter/setterهای جاوا؛ قراردادهای نامگذاری .NET) را ارائه میدهد تا در کد .NET طبیعی به نظر برسد. چه در حال تجمیع دادهها برای یک پرتفوی سازمانی باشید، چه در حال انجام بررسیهای کیفیت بر روی برنامهها، یا ساخت پلی بین CRM شما و ابزارهای PMO، MPXJ.Net پایهای قابل اعتماد و با عملکرد بالا فراهم میکند که به آن نیاز دارید.
شروع کار با 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 را از طریق 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}");
}
تبدیل فایلهای پروژه با API .NET
منبع باز 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 بر تمام وظایف تکرار کنند.
چگونه از طریق 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}");
}
}