Wanting to speed up compilation time of my project, I learned about the Plugins folder trick. That is, putting all things that do not need to be recompiled into the Plugins folder so they only get compiled once.
The issue is, when I do put things in the Plugins folder (such as third party assets), and then I try to use the assets’ scripts in my own scripts, I get are you missing a reference assembly errors.
I do not use assembly definitions. My scripts are in the project Assets folder and compiled in the default Assembly-CSharp.dll. The assets’ scripts are in the Plugins folder and do not use assembly definitions either so are compiled in Assembly-CSharp-firstpass.dll. Reading the documentation, the first-pass dll should be referenced in Assembly-CSharp.dll.
Why can’t my scripts see the scripts that are in the Plugins folder?
Well, the relevant documentation page is this one ^^. Though I agree that they missed to include the plugins folder on the special folders page.
Even the plugins folder is mainly meant for native plugins, it always has been the case that scripts inside the plugins folder are part of the first compilation stage. So “Standard Assets” and “plugins” have the same effect on scripts. If you should use it for this purpose is more a philosophical question. Some people move their own “standard assets” into the “Standard Assets” folder. Others only use the “Standard Assets” folders for scripts proviced by Unity. I don’t see any issues moving your own standard scripts into the “Standard Assets” folder as you can group all your stuff in a subfolder to seperate it from other standard assets.
Though I generally don’t like folder names that contain spaces (Yes, an old DOS habit, but up to this date there are cases where this can still cause issues). So the “plugins” folder seems to be more “attractive”. This could also be the reason why many people suggest using this folder.