The debugger and intellisense have very different goals in terms of what they want to display.
Intellisense is trying to provide the set of members which can be validly invoked on the object. Essentially accessible members and extension methods. The goal here is to help guide the user to writing valid code.
The debugger is trying to provide inspection on the runtime state of an object. It cares little about accessibility and instead puts all relative information up for display. It even allows for customization of the display by user extensions. This means you will often see members which simply don't exist on the object or are inaccessible from user code.
The latter comes into play for your scenario. The Page
type does indeed have a RelativeFilePath
property. But it is internal which is inaccessible to your code and hence Intellisense doesn't display it. The debugger does not consider accessibility for member display and hence provides the value.