2013-03-10 3 views
1

Мы создаем облачный сервис для предоставления «Компиляции как службы». У нас есть Ubuntu 12.04 VM на Azure. Нам также удалось установить GCC на виртуальной машине. Теперь мы создаем интерфейс на Visual Studio. В этом случае у нас есть текстовое поле, в котором будет храниться код. Но мы не можем понять, как использовать GCC для обработки кода?Доступ к GCC на облаке для компиляции

В настоящее время мы используем что-то подобное;

 string log = @"C:\log.c"; 
     using (FileStream fs = new FileStream(log, FileMode.Create)) 
     { 
      using (StreamWriter sw = new StreamWriter(fs)) 
      { 
       sw.Write(TextBox1.Text); 
       sw.Close(); 
      } 
     } 
     string szMgwGCCPath = "/usr/bin/gcc"; // Example of location 
     string szArguments = " -c log.c -o log.exe"; // Example of arguments 
     ProcessStartInfo gccStartInfo = new ProcessStartInfo(szMgwGCCPath, szArguments); 
     gccStartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     Process.Start(gccStartInfo); 

Я не уверен, какие его части являются правильными. Поскольку мы не можем его проверить, поскольку компилятор хранится на комбе.

string szMgwGCCPath = "/ usr/bin/gcc"; // Пример местоположения

Как нам указать местоположение? Используем ли мы URL-адрес хранилища blob? Как это сделать?

Как мы обрабатываем файл после этого?

+0

Вы пытаетесь запустить исполняемый файл Linux в .NET? Или у вас есть Windows GCC, который вы пытаетесь запустить? – Igorek

ответ

0

Ваш сценарий выше не ясен.

Прежде чем идти дальше, ваш код, указанный выше, написан на C#. В соответствии с .NET Framework Design Guidelines, * , пожалуйста, не используйте венгерскую нотацию * Это не нужно и в значительной степени бессмысленно в .NET (например, sz == 'строка символов, заканчивающихся на ноль ", НЕ является тем, как строки представлены в CLR!).

Назад к коду & сценарию:

Где ваш «передний конец» код работает? WinForms/WPF клиентское приложение? На веб-сайте ASP.NET?

Если ваш клиент работает в ASP.NET, вы размещаете веб-сайт ASP.NET в своей виртуальной машине Linux с помощью Mono (если это так, пожалуйста, обновите теги для вашего вопроса, чтобы включить Mono и Linux)? Если вы работаете в Mono в Linux, то почему вы пытаетесь создать «.exe»? Файлы .exe исполняются в Windows. В исполняемых файлах Linux обычно нет расширения «.exe». И если ваш клиент работает в Linux, почему вы используете MinGW? Это используется для запуска кода GNU в Windows!

Честно говоря, я думаю, вам нужно либо задуматься над тем, что вы пытаетесь достичь, либо переустановить свой сценарий & вопрос более четко.

+0

Сэр, спасибо за ответ. Позвольте мне попытаться рассказать вам сценарий должным образом. Мы должны размещать компилятор как службу через приложение .NET. Для этого мы создаем приложение для веб-роли. Требования следующие: Пользователь вводит код в текстовое поле. Мы подбираем этот текст, преобразуем его в файл C и скомпилируем его с помощью GCC, который мы уже установили в VM Ubuntu с помощью PuTTy. Проблема в том, что мы не уверены, что это сработает. Мы хотели построить что-то вроде ideone.com –

+0

Нам не разрешено использовать Mono. Нам пришлось установить GCC на виртуальную виртуальную машину и получить доступ к ней из приложения веб-роли. И этот код тестировался на окнах, поэтому использовался .exe. Извиняюсь за это заблуждение. –

+0

Приложение будет опубликовано на лазурном изображении и будет работать как cloudapp. Программы не будут сохранены и будет создан только временный файл c, который сохранит текст из текстового поля в пользовательском интерфейсе, где пользователь вводит код. Компилятор GCC находится в OSDisk виртуальной машины. И сама виртуальная машина находится на хранилище blob. Я хотел бы еще раз заявить, что мы пытаемся сделать что-то вроде ideone.com –