2015-08-25 4 views
2

Возможно ли запустить задачу Gulp из C# во время выполнения? В частности, в действии контроллера приложения MVC.Выполнение задачи Gulp от .NET C#?

У меня есть контент, управляемый пользователями, в приложении cms, которое в настоящее время состоит из css и js. Я ищу способ разрешить пользователю вводить scss и скомпилировать его в css (и минимизировать) перед сохранением.

Я рассмотрел проект BundleTransformer, который расширяет существующую библиотеку System.Web.Optimization для включения обработки SCSS в пакеты. https://www.nuget.org/packages/BundleTransformer.SassAndScss/ http://bundletransformer.codeplex.com/

Но я бы предпочел, чтобы предварительно скомпилировать SCSS всякий раз, когда он редактируется и сохраняется, а не связывая его при доступе позже в запросе HTTP (я знаю, что выход может быть в кэше, но я m также надеется избежать строк запроса Bundling, например: «/bundles/my-styles.css?v=592TjSpNmN0TzLFN9wZdSa_yD5-i1nCJTIqWDXaLeCk1»).

Я использую gulp локально в своем визуальном решении студии для concat и минимизации ресурсов js и scss и хотел бы использовать те же функции, если это возможно.

Я не могу найти ресурсы для использования задач gulps во время выполнения.

Возможно, я ошибаюсь, поэтому любые альтернативные предложения также будут высоко оценены.

ответ

2

Его прост - используйте Process.Start() method.

System.Diagnostics.Process.Start("gulp", "taskName"); 

Но я думаю, что вы, вероятно, задаете неправильный вопрос. Gulp работает поверх Node.js, и почти каждый из расширений в Gulp является оболочкой для приложений Node.js.

Что вы действительно должны спрашивать: «Как запустить код Node.js и .NET вместе?» Хотя я никогда не использовал его, способ, который выглядит многообещающим, заключается в использовании Edge.js.

using System; 
using System.Threading.Tasks; 
using EdgeJs; 

class Program 
{ 
    public static async void Start() 
    { 
     var func = Edge.Func(@" 
      return function (data, callback) { 
       callback(null, 'Node.js welcomes ' + data); 
      } 
     "); 

     Console.WriteLine(await func(".NET")); 
    } 

    static void Main(string[] args) 
    { 
     Task.Run((Action)Start).Wait(); 
    } 
} 
+0

Спасибо за вход @ NightOwl888, я ищу Edge.js – Chris

Смежные вопросы