In order for the Resolve menu to appear, you must be placed above the keyword that VS considers possible. If you entered the keyword incorrectly or do not have a link to the assembly, VS will not be able to resolve anything.
If you think about this a bit, you can enter any legal keyword into your code, and there may be some assembly that may contain this class, and then your keyword will be resolvable if you refer to this assembly. Since it is not only impossible for VS to know, but will also require changes to the project to reference this assembly, it makes sense to get out of scope with respect to the "Resolve" dialog.
If you want to see this in action, just create a line of code in it with the missing class:
namespace ResolveTest { class Program { static void Main(string[] args) { OtherClass.OtherMethod(); } } }
Please note that the OtherClass flag is checked because it cannot be found. If you right-click on it, there is no permission.
Now add the class definition (to another namespace):
namespace NotInTheSameSpace { public class OtherClass { public static void OtherMethod() { } } }
Typically, it will be in another file or another assembly in general, but for demo purposes, you can delete it directly under your existing code. You should now see the Allow menu in Main ().
The other thing that you see here, I believe, is that when there is nothing that could be resolved in the "Resolve" dialog box, it is not in this context menu, and not disabled, but visible. This may seem a bit confusing, but it really is an attempt to keep the context menu in line with your current context.