A Monobjc project
Inheritance: MonoDevelop.Projects.DotNetProject
        public static BuildResult GenerateXibDesignCode(CodeBehindWriter writer, MonobjcProject project, IEnumerable<ProjectFile> files)
        {
            BuildResult result = null;

            // Filter out xib files
            foreach(ProjectFile file in files.Where (BuildUtils.IsXIBFile)) {
                ProjectFile designerFile = GetDesignerFile (file);
                try {
                    // Only generate if needed
                    if (designerFile != null && IsMoreRecent (file, designerFile)) {
                        GenerateXibDesignCode(writer, file, designerFile);
                    }
                } catch (Exception ex) {
                    if (result == null) {
                        result = new BuildResult();
                    }
                    // Collect errors
                    result.AddError(file.FilePath, 0, 0, null, ex.Message);
                    LoggingService.LogError (String.Format (CultureInfo.CurrentUICulture, "Cannot generate design code for xib file {0}", file.FilePath), ex);
                }
            }

            return result;
        }
 public DeveloperToolsDesktopApplication(MonobjcProject project)
     : base(Constants.DEVELOPER_TOOLS, Constants.APPLICATION_TITLE, true)
 {
     this.project = project;
 }
        private static String GetArguments(MonobjcProject project, String file)
        {
            Version version = DeveloperToolsVersion;
            if (version == null) {
                return null;
            }

            StringBuilder arguments = new StringBuilder();
            arguments.Append("-a ");
            switch (version.Major) {
                case 3:
                    {
                        String path = Path.Combine(DeveloperToolsFolder, Constants.INTERFACE_BUILDER_APPLICATION);
                        arguments.AppendFormat("\"{0}\" \"{1}\"", path, file);
                        break;
                    }
                default:
                    {
                        String path = Path.Combine(DeveloperToolsFolder, Constants.XCODE_APPLICATION);
                        arguments.AppendFormat("\"{0}\" \"{1}\"", path, project.XcodeProjectFolder);
                        break;
                    }
            }

            return arguments.ToString();
        }
        public static IEnumerable<FilePair> GetReferencesFilePairs(MonobjcProject proj, ConfigurationSelector configuration)
        {
            var conf = (MonobjcProjectConfiguration)proj.GetConfiguration(configuration);

            foreach (var pair in GetReferenceFilePairsForProject(proj, configuration, conf)) {
                yield return pair;
            }
        }
        public static void CopyContentFiles(MonobjcProject proj, IProgressMonitor monitor, BuildData buildData, BuildResult result)
        {
            var cfg = (MonobjcProjectConfiguration)buildData.Configuration;

            string resDir = ((MonobjcProjectConfiguration)buildData.Configuration).ResourcesDirectory;

            // Copy 'content' files into 'Resources' directory
            var contentFiles = BuildUtils.GetContentFilePairs(buildData.Items.OfType<ProjectFile>(), resDir)
             	.Where(f => f.NeedsBuilding())
                .ToList();

            if (!proj.BundleIcon.IsNullOrEmpty) {
                FilePair icon = new FilePair(proj.BundleIcon, cfg.ResourcesDirectory.Combine(proj.BundleIcon.FileName));
                if (!File.Exists(proj.BundleIcon)) {
                    result.AddError(null, 0, 0, null, String.Format("Application icon '{0}' is missing.", proj.BundleIcon));
                    return;
                } else {
                    contentFiles.Add(icon);
                }
            }

            if (contentFiles.Count > 0) {
                monitor.BeginTask(GettextCatalog.GetString("Copying content files"), contentFiles.Count);
                foreach (var file in contentFiles) {
                    file.EnsureOutputDirectory();
                    monitor.Log.WriteLine(GettextCatalog.GetString("Copying '{0}' to '{1}'", file.Input, file.Output));
                    File.Copy(file.Input, file.Output, true);
                    monitor.Step(1);
                }
                monitor.EndTask();
            }
        }