# OnPreprocessBuild(BuildCallbackContext)

> Implement this method to receive a callback before the build is started.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.Build](/engine/6000.6/script-reference/unityeditor/build.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
void OnPreprocessBuild(BuildCallbackContext ctx)
```

### Parameters

**** (\[BuildCallbackContext]\(/engine/6000.6/script-reference/unityeditor/build/buildcallbackcontext)): A context containing information about the build, such as its build report.

### Remarks

This callback is invoked during Player, AssetBundle, and content directory builds.

Additional Resources: [IPostprocessBuildWithContext](/engine/6000.6/script-reference/unityeditor/build/ipostprocessbuildwithcontext.md), [BuildPlayerProcessor](/engine/6000.6/script-reference/unityeditor/build/buildplayerprocessor.md), [BuildPipeline.BuildPlayer](/engine/6000.6/script-reference/unityeditor/buildpipeline/buildplayer.md), [BuildPipeline.BuildAssetBundles](/engine/6000.6/script-reference/unityeditor/buildpipeline/buildassetbundles.md), [BuildPipeline.BuildContentDirectory](/engine/6000.6/script-reference/unityeditor/buildpipeline/buildcontentdirectory.md)

### Examples

```csharp
using UnityEditor;
using UnityEditor.Build;
using UnityEngine;
using UnityEditor.Build.Reporting;

class PreprocessBuildExample : IPreprocessBuildWithContext
{
    public int callbackOrder { get { return 0; } }
    public void OnPreprocessBuild(BuildCallbackContext ctx)
    {
        string prefix = "";
        if (ctx.IsContentOnlyBuild)
            prefix = "Content-only build:";
        else if (ctx.IsPlayerBuild)
            prefix = "Player build:";

        BuildSummary summary = ctx.Report.summary;
        Debug.Log(prefix + " PreprocessBuild called. " +
            "Target: " + summary.platform + " Output path: " + summary.outputPath);
    }
}
```
