BuildPipeline.BuildAssetBundles doesn't omit Editor script paths

When using BuildPipeline.BuildAssetBundles() I get a ton of errors like this:

Assets/tools/Mega-Fiers/Editor/MegaFiers/MegaOBJExportEditor.cs(3,7): error CS0246: The type or namespace name `UnityEditor' could not be found. Are you missing an assembly reference?

Normal Player build do not have this error. This is on 2017.4.6 LTS editor. Fresh project using the same code to build does not have the same problem.

Here’s my build code:

string bundlepath = EditorUtility.SaveFilePanel("Build Mod","%userprofile%\\Documents","My First Mod","assetBundle");
		string filename = Path.GetFileNameWithoutExtension(bundlepath);
		string directory = Path.GetDirectoryName(bundlepath);
		AssetBundleBuild[] builds = {new AssetBundleBuild()};
		builds[0].assetBundleName = filename;
		string[] assets = new string[1];
		assets[0] = SceneManager.GetActiveScene().path;
		builds[0].assetNames = assets;
		Debug.Log("Building asset bundle " + filename + " to " + directory);
		Debug.Log("Included scene path: " + assets[0]);
		AssetBundleManifest manifest = BuildPipeline.BuildAssetBundles(directory,builds,BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows64);

I don’t think it’s relevant tho, as the same code builds properly a fresh empty project.

Is this a bug or am I missing a specific setting that makes BuildPipeline try and squeeze editor scripts into my bundle?

Screenshot here:

Ok, I have managed to track down the bug and find the solution. The issue only pertains when using Assembly Definitions, which are supposed to supersede special folders (like ‘Editor’ folder) as explained by Karl Jones here: https://forum.unity.com/threads/assembly-definition-woes.509541/#post-3402749

tl;dr If you’re using Assembly Definitions, put .asmdef files in all Editor directories and set Platforms to ‘Editor’ only.

Hope this helps someone!