In VO most programmers used libraries and not DLLs. So, when executing any of these functions, they are called directly from the executable, and therefore this code works in VO:
function GetExeFileName() as string local pszBuffer as psz local cName as string pszBuffer := MemAlloc( 1024 ) GetModuleFileName( _GetInst(), pszBuffer, 1023 ) cName := PSZ2String( pszBuffer ) MemFree( pszBuffer ) return cName
But in X# libraries are DLLs and therefore external entities. This call can be changed to
function GetExeFileName() as string local cName as string cName := System.Reflection.Assembly.GetEntryAssembly():Location return cName