Microsoft Project یک نرم افزار مدیریت پروژه محبوب است که مدیریت کارآمد پروژه ها را برای مدیران پروژه آسان تر می کند. این به مدیران اجازه می دهد وظایف و منابع را ایجاد کنند، وظایف را به منابع اختصاص دهند، پیشرفت پروژه را پیگیری کنند، بودجه را مدیریت کنند و سایر عملیات مرتبط با پروژه را انجام دهند. مایکروسافت به منظور ایجاد و مدیریت فایل‌های MS Project به صورت برنامه‌نویسی، MS Office Automation را ارائه می‌کند. با این حال، همراه با کاستی‌های دیگر، شما را ملزم به نصب MS Office می‌کند. برای پر کردن این شکاف، Aspose به شما یک راه حل اتوماسیون پروژه MS برای برنامه های NET به عنوان Aspose.Tasks for .NET ارائه می کند.

Aspose.Tasks for .NET یک API با ویژگی های غنی است که به شما امکان می دهد فایل های MS Project (mpp/.xml) را به صورت برنامه نویسی با استفاده از C# یا VB.NET ایجاد کنید. علاوه بر این، ویژگی های مختلفی را برای کار با وظایف، منابع و تقویم ها ارائه می دهد. در این مقاله، نحوه استفاده از Aspose.Tasks برای دات نت را برای ایجاد فایل های MS Project و کار با وظایف و منابع با استفاده از سی شارپ به شما نشان خواهم داد. بقیه مقاله به بخش های زیر تقسیم می شود.

ایجاد فایل های پروژه MS با استفاده از سی شارپ

MPP فرمت فایل اختصاصی مایکروسافت است که برای فایل‌های MS Project استفاده می‌شود. با این حال، می‌توانید داده‌های پروژه را در فایل‌های XML برای اشتراک‌گذاری بین برنامه‌های مختلف نگه دارید. ایجاد یک پروژه جدید از ابتدا یک کار ساده است و می توان با استفاده از مراحل زیر انجام داد:

نمونه کد زیر نحوه ایجاد فایل های MS Project با استفاده از سی شارپ را نشان می دهد.

فایل های پروژه MS را به عنوان MPP ذخیره کنید

// یک پروژه جدید ایجاد کنید
Project project = new Project();

// آن را به عنوان فایل mpp ذخیره کنید
project.Save("New Project.mpp", SaveFileFormat.MPP);

فایل های پروژه MS را به صورت XML ذخیره کنید

// یک پروژه جدید ایجاد کنید
Project project = new Project();

// آن را به عنوان فایل xml ذخیره کنید
project.Save("EmptyProjectSaveXML_out.xml", SaveFileFormat.XML);

اضافه کردن Tasks به فایل های پروژه MS با استفاده از سی شارپ

فایل خالی MS Project بدون وظایف و منابع بی فایده است. بنابراین بیایید نحوه ایجاد و اضافه کردن وظایف به یک پروژه را ببینیم. یک کار می تواند یک کار منفرد یا کار خلاصه شامل گروهی از وظایف فرعی در آن باشد. مراحل زیر برای افزودن وظایف به فایل MS Project آورده شده است.

  • شیء Project را ایجاد و مقداردهی اولیه کنید.
  • با استفاده از روش Project.RootTask.Children.Add(string) یک کار خلاصه جدید به مجموعه Tasks پروژه اضافه کنید.
  • با استفاده از روش Task.Children.Add(string) یک کار فرعی به کار خلاصه اضافه کنید.
  • پروژه را با استفاده از روش Project.Save() ذخیره کنید.

نمونه کد زیر نحوه ایجاد و افزودن وظایف به فایل های MS Project با استفاده از سی شارپ را نشان می دهد.

// یک پروژه جدید ایجاد کنید
Project project = new Project();

// وظیفه و کار فرعی را اضافه کنید
Task task = project.RootTask.Children.Add("Summary1");
Task subtask = task.Children.Add("Subtask1");

// ذخیره فایل
project.Save("CreateTasks_out.xml", SaveFileFormat.XML);

نمونه کد زیر نحوه تنظیم ویژگی های مختلف وظایف مانند مدت زمان، تاریخ/زمان شروع و غیره را نشان می دهد.

// پروژه ایجاد کنید
Project project = new Project();

// وظیفه را اضافه کنید و ویژگی های وظیفه را تنظیم کنید
Task task = project.RootTask.Children.Add("Task1");
task.Set(Tsk.Start, project.RootTask.Get(Tsk.Start).AddDays(1));
task.Set(Tsk.Name, "new name");

افزودن منابع به فایل های پروژه MS با استفاده از سی شارپ

منابع موجودیت هایی هستند که قرار است وظایف یک پروژه را انجام دهند. از این رو، یک پروژه بدون منابع لازم برای کار بر روی آن امکان پذیر نخواهد بود. بنابراین بیایید نحوه ایجاد و افزودن منابع به یک پروژه را بررسی کنیم. در زیر مراحل اضافه کردن منابع به فایل MS Project آورده شده است.

  • با استفاده از کلاس Project یک پروژه جدید ایجاد کنید.
  • با استفاده از روش Project.Resources.Add(string) یک منبع جدید به مجموعه Resources پروژه اضافه کنید.
  • پروژه را با استفاده از روش Project.Save() ذخیره کنید.

نمونه کد زیر نحوه افزودن منابع به فایل MS Project با استفاده از C# را نشان می دهد.

// پروژه ایجاد کنید
Project project = new Project();

// منابع را اضافه کنید
Resource resource = project.Resources.Add("Rsc");

// ذخیره پروژه
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

نمونه کد زیر ویژگی های یک منبع مانند تاریخ/زمان شروع، نوع و غیره را تنظیم می کند.

// پروژه ایجاد کنید
Project project = new Project();

// منابع را اضافه کنید
Resource resource = project.Resources.Add("Rsc");

// ذخیره پروژه
project.Save("CreateResources_out.xml", SaveFileFormat.XML);

تخصیص وظایف به منابع در پروژه با استفاده از سی شارپ

پس از تکمیل افزودن وظایف و منابع در پروژه، می توانید تعیین کنید که کدام کار توسط کدام منبع انجام شود. بنابراین، شما وظیفه(های) را به هر منبع اختصاص خواهید داد. مراحل زیر برای تخصیص وظایف به منابع در یک پروژه آورده شده است.

  • با استفاده از کلاس Project یک پروژه ایجاد یا بارگذاری کنید.
  • منابع جدید را به پروژه اضافه کنید و ویژگی های آنها مانند قالب تاریخ، تاریخ شروع و غیره را تنظیم کنید.
  • وظایف جدید را به پروژه اضافه کنید و ویژگی های آنها مانند تاریخ/زمان شروع، مدت زمان و غیره را تنظیم کنید.
  • با افزودن کار و منبع مربوطه به مجموعه Project.ResourceAssignments، تکلیف وظایف را انجام دهید.
  • پروژه را با استفاده از روش Project.Save() ذخیره کنید.

در زیر نمونه کد کاملی از نحوه ایجاد و تخصیص وظایف به منابع در فایل MS Project آورده شده است.

// پروژه ایجاد کنید
Project project = new Project("New Project.mpp")
{
    CalculationMode = CalculationMode.Automatic
};

// خصوصیات را تنظیم کنید
project.Set(Prj.DateFormat, DateFormat.DateDddMmDdYy);
project.Set(Prj.StartDate, new DateTime(2019, 9, 16, 9, 0, 0));
project.Set(Prj.NewTasksAreManual, false);
project.Set(Prj.ActualsInSync, false);

// منابع را اضافه کنید
Resource workResource = project.Resources.Add("Servente (Work)");
workResource.Set(Rsc.Name, "Servente (Work)");
workResource.Set(Rsc.Initials, "S");
workResource.Set(Rsc.Type, ResourceType.Work);
workResource.Set(Rsc.StandardRateFormat, RateFormatType.Hour);
workResource.Set(Rsc.Code, "1503");

Resource materialResource = project.Resources.Add("Tijolo (Material)");
materialResource.Set(Rsc.Name, "Tijolo (Material)");
materialResource.Set(Rsc.Initials, "T");
materialResource.Set(Rsc.Type, ResourceType.Material);
materialResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
materialResource.Set(Rsc.Code, "21341");

// وظایف را اضافه کنید
Task task1 = project.RootTask.Children.Add("Task - 01");
task1.Set(Tsk.IsRollup, new NullableBool(true));
task1.Set(Tsk.IsPublished, new NullableBool(false));
Task task2 = task1.Children.Add("Task - 01.01");
task2.Set(Tsk.IsRollup, new NullableBool(true));
task2.Set(Tsk.IsPublished, new NullableBool(false));
Task task3 = task2.Children.Add("Task - 01.01.001");
task3.Set(Tsk.IsEstimated, new NullableBool(false));
task3.Set(Tsk.Start, new DateTime(2019, 9, 16, 9, 0, 0));
task3.Set(Tsk.Duration, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.Work, project.GetDuration(10, TimeUnitType.Day));
task3.Set(Tsk.IsRollup, new NullableBool(true));
task3.Set(Tsk.IsPublished, new NullableBool(false));

// وظایف را تعیین کنید
ResourceAssignment assignment1 = project.ResourceAssignments.Add(task3, materialResource);
assignment1.Set(Asn.Delay, project.GetDuration(40, TimeUnitType.Hour));
assignment1.Set(Asn.Start, new DateTime(2019, 9, 23, 9, 0, 0));
assignment1.Set(Asn.Finish, new DateTime(2019, 9, 27, 18, 0, 0));
ResourceAssignment assignment2 = project.ResourceAssignments.Add(task3, workResource);
assignment2.Set(Asn.Work, project.GetDuration(56, TimeUnitType.Hour));
assignment2.Set(Asn.Start, new DateTime(2019, 9, 16, 9, 0, 0));
assignment2.Set(Asn.Finish, new DateTime(2019, 9, 24, 18, 0, 0));

// برای مطابقت کامل با MPP مورد انتظار
assignment2.Set(Asn.WorkContour, WorkContourType.Contoured);
task3.Set(Tsk.IsManual, new NullableBool(true));
task1.Set(Tsk.IsManual, new NullableBool(true));

// ذخیره پروژه
project.Save("Assignment_Dates.mpp", SaveFileFormat.MPP);

افزودن تقویم به پروژه با استفاده از سی شارپ

تقویم ها نیز یکی از موجودیت های اصلی پروژه ها هستند که برای تعیین برنامه زمان بندی پروژه استفاده می شوند. تقویم این امکان را برای مدیران پروژه فراهم می کند تا یک جدول زمانی برای یک پروژه ایجاد کنند. مراحل زیر برای افزودن تقویم به پروژه آورده شده است.

  • با استفاده از کلاس Project یک پروژه ایجاد یا بارگذاری کنید.
  • Calendar جدید را به مجموعه Project.Calendars اضافه کنید.
  • برنامه را با استفاده از شی Calendar ایجاد کنید.
  • پروژه را ذخیره کنید.

نمونه کد زیر نحوه افزودن تقویم به پروژه با استفاده از سی شارپ را نشان می دهد.

// یک نمونه پروژه ایجاد کنید
Project project = new Project();

// تقویم را تعریف کنید
Calendar cal = project.Calendars.Add("Calendar1");

// روزهای کاری از دوشنبه تا پنجشنبه را با زمان بندی پیش فرض اضافه کنید
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Monday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Tuesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Wednesday));
cal.WeekDays.Add(WeekDay.CreateDefaultWorkingDay(DayType.Thursday));
cal.WeekDays.Add(new WeekDay(DayType.Saturday));
cal.WeekDays.Add(new WeekDay(DayType.Sunday));

// روز جمعه را به عنوان روز کاری کوتاه تعیین کنید
WeekDay myWeekDay = new WeekDay(DayType.Friday);

// زمان کار را تنظیم می کند. فقط بخش زمانی از DateTime مهم است
WorkingTime wt1 = new WorkingTime();
wt1.FromTime = new DateTime(1, 1, 1, 9, 0, 0, 0);
wt1.ToTime = new DateTime(1, 1, 1, 12, 0, 0, 0);
WorkingTime wt2 = new WorkingTime();
wt2.FromTime = new DateTime(1, 1, 1, 13, 0, 0, 0);
wt2.ToTime = new DateTime(1, 1, 1, 16, 0, 0, 0);
myWeekDay.WorkingTimes.Add(wt1);
myWeekDay.WorkingTimes.Add(wt2);
myWeekDay.DayWorking = true;
cal.WeekDays.Add(myWeekDay);

// ذخیره پروژه
project.Save("Project_DefineCalendarWeekdays_out.xml", SaveFileFormat.XML);

دانلود یا نصب کنید

می توانید Aspose.Tasks را برای DLL .NET دانلود یا با استفاده از NuGet در پروژه خود نصب کنید.

Aspose.Tasks را برای دات نت به صورت رایگان امتحان کنید

Aspose یک مجوز موقت رایگان برای امتحان محصولات خود بدون محدودیت آزمایشی ارائه می دهد. می توانید یکی را از اینجا دریافت کنید.

همچنین ببینید