How to access "Create Visual Studio Solution" build option from script?

How can I read/write the “Create Visual Studio Solution” option from an editor script?
How can I read/write the “Create Xcode Project” option from an editor script?

I guess it’s done through EditorUserBuildSettings.SetPlatformSettings / GetPlatformSettings, but having no documentation what settings Unity actually provides, makes it pretty hard. Is there such a list somewhere btw?

I finally figured it out after inspecting some files in the Library folder. As mentioned in the first post, you get/set these settings via EditorUserBuildSettings.SetPlatformSettings / GetPlatformSettings.

Here are the arguments you need to pass:

+--------------+------------------------+
| Platform     | Setting                |
|--------------+------------------------+
| Standalone   | CopyPDBFiles           |
| Standalone   | CreateSolution         |
| OSXUniversal | CreateXcodeProject     |
+--------------+------------------------+
5 Likes

This was really helpful. Additionally, did anyone manage to get it to work with the scriptable build pipeline? I tried to set the value in a custom build step. But it seems that it was ignored in the final build.

public class BuildXcodeSettings : IBuildComponent
{
    public bool GenerateXcode;

    public bool OnGUI()
    {
        EditorGUI.BeginChangeCheck();
        GenerateXcode =  EditorGUILayout.Toggle("GenerateXcode", GenerateXcode);
        return EditorGUI.EndChangeCheck();
    }
}

public class BuildStepGenerateXCode : ClassicBuildPipelineCustomizer
{
    public override void OnBeforeBuild()
    {
        var buildXcodeSettings = Context.GetComponentOrDefault<BuildXcodeSettings>();
        Debug.Log($"Generate Xcode Project {buildXcodeSettings.GenerateXcode}");
        EditorUserBuildSettings.SetPlatformSettings(
            "OSXUniversal",
            "CreateXcodeProject",
            buildXcodeSettings.GenerateXcode ? "true" : "false"
        );
    }

    public override Type[] UsedComponents => new[] {typeof(BuildXcodeSettings)};
}

For a newer Unity version (I’m using 2020.3.30), there are undocumented APIs for these options:

  • UnityEditor.WindowsStandalone.UserBuildSettings.copyPDBFiles
  • UnityEditor.WindowsStandalone.UserBuildSettings.createSolution
  • UnityEditor.OSXStandalone.UserBuildSettings.createXcodeProject
5 Likes