Я хотел бы выполнить код JavaScript из сборки C # и вернуть результаты кода JavaScript в вызывающий код C #.
Проще определить вещи, которые я не пытаюсь сделать:
Я не пытаюсь вызвать функцию JavaScript на веб-странице из моего кода.
Я не пытаюсь загрузить элемент управления WebBrowser.
Я не хочу, чтобы JavaScript выполнял AJAX-вызов на сервер.
Что я хочу сделать, так это написать модульные тесты в JavaScript и затем вывести модульные тесты в формате JSON, даже простой текст будет в порядке. Затем я хочу иметь общий класс / исполняемый файл C #, который может загружать файл, содержащий JS, запускать модульные тесты JS, отбирать / загружать результаты и возвращать данные прохождения / неудачи с деталями во время задачи после сборки.
Я думаю, что возможно использовать старый ActiveX ScriptControl, но, похоже, должен быть способ .NET сделать это без использования SilverLight, DLR или чего-либо еще, что еще не было отправлено. У кого-нибудь есть идеи?
обновление: Из блога Брэда Абрамса
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 # и использовать их в качестве индикатора того, стоит ли сборка сломан.