// Create project instance System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName()); System::SharedPtr project = System::MakeObject(dataDir + u"Project1.mpp"); project->Set(Prj::NewTasksAreManual(), NullableBool::to_NullableBool(false)); // Create new custom field (Task Text1) with formula which will double task cost System::SharedPtr attr = ExtendedAttributeDefinition::CreateTaskDefinition(Aspose::Tasks::CustomFieldType::Text, Aspose::Tasks::ExtendedAttributeTask::Text1, u"Custom"); attr->set_Alias(u"Double Costs"); attr->set_Formula(u"[Cost]*2"); project->get_ExtendedAttributes()->Add(attr); // Add a task System::SharedPtr task = project->get_RootTask()->get_Children()->Add(u"Task"); // Set task cost task->Set(Tsk::Cost(), static_cast(100)); // Save project project->Save(dataDir + u"WriteFormulasInExtendedAttributesToMPP_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);