internal string AddAppExtension(string mainTarget, string name, string infoPlistPath)
{
string ext = ".appex";
PBXNativeTargetData data = this.CreateNewTarget(name, ext, "com.apple.product-type.app-extension");
this.SetDefaultAppExtensionReleaseBuildFlags(this.buildConfigs[this.BuildConfigByName(data.guid, "Release")], infoPlistPath);
this.SetDefaultAppExtensionDebugBuildFlags(this.buildConfigs[this.BuildConfigByName(data.guid, "Debug")], infoPlistPath);
PBXSourcesBuildPhaseData data2 = PBXSourcesBuildPhaseData.Create();
this.sources.AddEntry(data2);
data.phases.AddGUID(data2.guid);
PBXResourcesBuildPhaseData data3 = PBXResourcesBuildPhaseData.Create();
this.resources.AddEntry(data3);
data.phases.AddGUID(data3.guid);
PBXFrameworksBuildPhaseData data4 = PBXFrameworksBuildPhaseData.Create();
this.frameworks.AddEntry(data4);
data.phases.AddGUID(data4.guid);
PBXCopyFilesBuildPhaseData data5 = PBXCopyFilesBuildPhaseData.Create("Embed App Extensions", "13");
this.copyFiles.AddEntry(data5);
this.nativeTargets[mainTarget].phases.AddGUID(data5.guid);
PBXContainerItemProxyData data6 = PBXContainerItemProxyData.Create(this.project.project.guid, "1", data.guid, name);
this.containerItems.AddEntry(data6);
PBXTargetDependencyData data7 = PBXTargetDependencyData.Create(data.guid, data6.guid);
this.targetDependencies.AddEntry(data7);
this.nativeTargets[mainTarget].dependencies.AddGUID(data7.guid);
PBXBuildFileData buildFile = PBXBuildFileData.CreateFromFile(this.FindFileGuidByProjectPath("Products/" + name + ext), false, "");
this.BuildFilesAdd(mainTarget, buildFile);
data5.files.AddGUID(buildFile.guid);
this.AddFile(infoPlistPath, name + "/Supporting Files/Info.plist", PBXSourceTree.Source);
return data.guid;
}