Ładowanie kompilatora TypeScript do ClearScript, „WScript jest niezdefiniowany”, niemożliwe zadanie?
Próbowałem użyćClearScript załadowaćMaszynopis kompilator w celu skompilowania podstawowego kodu TypeScript.
Niestety podczas wykonywania źródła kompilatora TypeScript pojawia się ten błąd:
„WScript” jest niezdefiniowany
To jestLINQPad program, którego użyłem, umieść biblioteki ClearScript dll iPlik kompilatora TypeScript obok programu .linq:
void Main()
{
using (var js = new Microsoft.ClearScript.Windows.JScriptEngine(Microsoft.ClearScript.Windows.WindowsScriptEngineFlags.DisableSourceManagement))
{
var typeScriptSource = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "tsc.js"));
js.Execute(typeScriptSource);
const string typeScriptCode = @"
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return ""Hello, "" + this.greeting;
}
}
function test()
{
var greeter = Greeter(""world"");
return greeter.greet();
}
";
js.Script.TypeScript.Compile(typeScriptCode);
object result = js.Script.test();
result.Dump();
}
}
#region Copy ClearScript to correct location
static UserQuery()
{
foreach (var filename in new[] { "ClearScriptV8-32.dll", "ClearScriptV8-64.dll", "v8-ia32.dll", "v8-x64.dll" })
{
try
{
string sourcePath = Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), filename);
string targetPath = Path.Combine(Path.GetDirectoryName(typeof(Util).Assembly.Location), filename);
File.Copy(sourcePath, targetPath, true);
}
catch (IOException ex)
{
unchecked
{
const int fileInUseHresult = (int)0x80070020;
if (ex.HResult != fileInUseHresult)
throw;
}
}
}
}
#endregion
Błąd występuje w tej linii:
js.Execute(typeScriptSource);
Stworzyłem plik .zip ze wszystkim, czego potrzebujeszLINQPad załadować plik .linq i eksperyment. Dll ClearScript są tworzone z niezmodyfikowanego źródła, ale jeśli mi nie ufasz, powinieneś być w stanie je odtworzyć (jeśli ich nie masz).
Jest dostępny tutaj:Link Dropbox do SO19023498.zip.
Co próbowałem:
Próbowałem najpierw wykonać ten kod:
var WScript = new ActiveXObject("WSH.WScript");
To spowodowało tylko ten błąd:Automation server can't create object
nie widziałemWSH.WScript
w rejestrze pod kluczem HKEY_CLASSES_ROOT, aby to mogło być to.
Próbowałem dowiedzieć się, jak utworzyć obiekt z .NET i ustawić go w kontekście skryptu, ale najwyraźniej nie patrzę we właściwe miejsce.