# OnPreprocessBuild(BuildCallbackContext)

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

## Definition

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

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

### Parameters

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

### Remarks

This callback is invoked during Player builds and AssetBundle builds.

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

### Examples

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

namespace BuildDocExamples
{
    class IPreprocessBuildWithContext_OnPreprocessBuildExample2 : IPreprocessBuildWithContext
    {
        public int callbackOrder { get { return 0; } }
        public void OnPreprocessBuild(BuildCallbackContext ctx)
        {
            if (ctx.IsContentOnlyBuild)
                Debug.Log("AssetBundle build: IPreprocessBuildWithContext_OnPreprocessBuildExample2.OnPreprocessBuild for target " + ctx.Report.summary.platform + " at path " + ctx.Report.summary.outputPath);
            else if (ctx.IsPlayerBuild)
                Debug.Log("Player build: IPreprocessBuildWithContext_OnPreprocessBuildExample2.OnPreprocessBuild for target " + ctx.Report.summary.platform + " at path " + ctx.Report.summary.outputPath);
        }
    }
}
```
