1

我们正在构建一个云服务来提供“编译即服务”。我们在 Azure 上有一个 Ubuntu 12.04 VM。我们也设法在虚拟机上安装了 GCC。现在我们正在 Visual Studio 上构建前端。我们有一个文本框来保存代码。但是我们无法弄清楚如何使用 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);

我不确定它的哪些部分是正确的。由于我们无法测试它,因为编译器存储在 clod 上。

字符串 szMgwGCCPath = "/usr/bin/gcc"; // 位置示例

我们如何给出位置?我们是否使用 blob 存储 URL?怎么做?

之后我们如何处理文件?

4

1 回答 1

1

您上面的情况尚不清楚。

在我们继续之前,您上面的代码是用 C# 编写的。根据.NET Framework 设计指南,*请不要使用匈牙利符号 *这在 .NET 中是不必要的,而且在很大程度上没有意义(例如 sz == '字符串以零结尾'不是字符串在 CLR 中的表示方式!) .

回到您的代码和场景:

您的“前端”代码在哪里运行?WinForms/WPF 客户端应用程序?在 ASP.NET 网站中?

如果您的客户端在 ASP.NET 中运行,您是否使用 Mono 在 Linux VM 中托管 ASP.NET 网站(如果是,请更新您问题的标签以包括 Mono 和 Linux)?如果您在 Linux 上运行 Mono,那么您为什么要尝试生成“.exe”?“.exe”文件是 Windows 可执行文件 - Linux 可执行文件通常没有“.exe”扩展名。如果您的客户端在 Linux 上运行,您为什么要使用 MinGW?这用于在 Windows 上运行 GNU 代码!

坦率地说,我认为您需要重新考虑您要达到的目标,或者更清楚地重新陈述您的方案和问题。

于 2013-03-11T06:49:14.897 回答