Я хотел бы выполнить код JavaScript из сборки C# и получить результаты кода JavaScript, возвращаемого вызывающему C# -коду.Выполнение JavaScript из сборки C#
легче определить то, что я не пытаюсь сделать:
Я не пытаюсь вызвать функцию JavaScript на веб-странице из моего кода позади.
Я не пытаюсь загрузить элемент управления WebBrowser.
Я не хочу, чтобы JavaScript выполнял вызов AJAX на сервер.
Что я хочу сделать, это написать единичные тесты в JavaScript и затем выполнить юнит-тесты вывода JSON, даже обычный текст будет в порядке. Затем я хочу иметь общий класс C#/исполняемый файл, который может загружать файл, содержащий JS, запускать JS-модульные тесты, ломать/загружать результаты и возвращать данные о пропуске/сбое во время задачи пост-сборки.
Я думаю, что это возможно с использованием старого ActiveX ScriptControl, но похоже, что это должно быть .NET способ сделать это, не используя SilverLight, DLR или что-нибудь еще, что еще не отправлено. У кого-нибудь есть идеи?
обновление: From Brad Abrams blog
namespace Microsoft.JScript.Vsa
{
[Obsolete("There is no replacement for this feature. " +
"Please see the ICodeCompiler documentation for additional help. " +
"http://go.microsoft.com/fwlink/?linkid=14202")]
Разъяснение: У нас есть модульные тесты для наших функций JavaScript, написанных на JavaScript с использованием структуры JsUnit. Прямо сейчас во время нашего процесса сборки мы должны вручную загрузить веб-страницу и нажать кнопку, чтобы убедиться, что все тесты модуля JavaScript пройдены. Я хотел бы иметь возможность выполнять тесты во время процесса после сборки, когда выполняются наши автоматические тесты на модуле C# и сообщают об успехе/неудаче наряду с модульными тестами C# и используют их в качестве индикатора того, будет ли сборка сломан.
Это такой позор, что реализация Javascript для DLR была оставлена, я считаю, что она называлась JScriptX, или это была бы хорошая чистая интеграция наряду с динамическими функциями C# 4.0. – 2010-09-12 05:41:53