internal void PrintUsage(){
// if '/' separates dir, use '-' as switch
string cmdLineSwitch = Path.DirectorySeparatorChar == '/' ? "-" : "/" ;
CultureInfo culture = JScriptCompiler.GetCultureInfo();
PrintBanner(culture);
Console.WriteLine(Localize("Usage format", culture));
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Usage options", culture));
Console.WriteLine("");
Console.Write(" ");
Console.WriteLine(Localize("Output Files", culture));
Console.Write(" " + cmdLineSwitch + "out:<file> ");
Console.WriteLine(Localize("Usage /out", culture));
Console.Write(" " + cmdLineSwitch + "t[arget]:exe ");
Console.WriteLine(Localize("Usage /t:exe", culture));
Console.Write(" " + cmdLineSwitch + "t[arget]:winexe ");
Console.WriteLine(Localize("Usage /t:winexe", culture));
Console.Write(" " + cmdLineSwitch + "t[arget]:library ");
Console.WriteLine(Localize("Usage /t:library", culture));
Console.Write(" " + cmdLineSwitch + "platform:<platform> ");
Console.WriteLine(Localize("Usage /platform", culture));
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Input Files", culture));
Console.Write(" " + cmdLineSwitch + "autoref[+|-] ");
Console.WriteLine(Localize("Usage /autoref", culture));
Console.Write(" " + cmdLineSwitch + "lib:<path> ");
Console.WriteLine(Localize("Usage /lib", culture));
Console.Write(" " + cmdLineSwitch + "r[eference]:<file list> ");
Console.WriteLine(Localize("Usage /reference", culture));
Console.Write(" ");
Console.WriteLine("<file list>: <assembly name>[;<assembly name>...]");
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Resources", culture));
Console.Write(" " + cmdLineSwitch + "res[ource]:<info> ");
Console.WriteLine(Localize("Usage /resource", culture));
Console.WriteLine(" <info>: <filename>[,<name>[,public|private]]");
Console.Write(" " + cmdLineSwitch + "linkres[ource]:<info> ");
Console.WriteLine(Localize("Usage /linkresource", culture));
Console.WriteLine(" <info>: <filename>[,<name>[,public|private]]");
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Code Generation", culture));
Console.Write(" " + cmdLineSwitch + "debug[+|-] ");
Console.WriteLine(Localize("Usage /debug", culture));
Console.Write(" " + cmdLineSwitch + "fast[+|-] ");
Console.WriteLine(Localize("Usage /fast", culture));
Console.Write(" " + cmdLineSwitch + "warnaserror[+|-] ");
Console.WriteLine(Localize("Usage /warnaserror", culture));
Console.Write(" " + cmdLineSwitch + "w[arn]:<level> ");
Console.WriteLine(Localize("Usage /warn", culture));
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Miscellaneous", culture));
Console.Write(" @<filename> ");
Console.WriteLine(Localize("Usage @file", culture));
Console.Write(" " + cmdLineSwitch + "? ");
Console.WriteLine(Localize("Usage /?", culture));
Console.Write(" " + cmdLineSwitch + "help ");
Console.WriteLine(Localize("Usage /?", culture));
Console.Write(" " + cmdLineSwitch + "d[efine]:<symbols> ");
Console.WriteLine(Localize("Usage /define", culture));
Console.Write(" " + cmdLineSwitch + "nologo ");
Console.WriteLine(Localize("Usage /nologo", culture));
Console.Write(" " + cmdLineSwitch + "print[+|-] ");
Console.WriteLine(Localize("Usage /print", culture));
Console.WriteLine();
Console.Write(" ");
Console.WriteLine(Localize("Advanced", culture));
Console.Write(" " + cmdLineSwitch + "codepage:<id> ");
Console.WriteLine(Localize("Usage /codepage", culture));
Console.Write(" " + cmdLineSwitch + "lcid:<id> ");
Console.WriteLine(Localize("Usage /lcid", culture));
Console.Write(" " + cmdLineSwitch + "nostdlib[+|-] ");
Console.WriteLine(Localize("Usage /nostdlib", culture));
Console.Write(" " + cmdLineSwitch + "utf8output[+|-] ");
Console.WriteLine(Localize("Usage /utf8output", culture));
Console.Write(" " + cmdLineSwitch + "versionsafe[+|-] ");
Console.WriteLine(Localize("Usage /versionsafe", culture));
Console.WriteLine();
}