Reading some of the replies to the main post: missing scripts can also occur if you change the name of a script, or if the MonoBehaviour’s class name does not match the file name.
I can’t remember exactly, but unrelated compiler errors may cause other things to stall in this way.
I have had issues of Unity and Mono not behaving nicely together if I didn’t save in Mono, then in Unity. I use Visual Studio now, and it also happens there.