【问题标题】:Compiling code from a ASP.NET website从 ASP.NET 网站编译代码
【发布时间】:2011-02-13 06:36:30
【问题描述】:

我需要在 ASP.NET 页面上有一个文本框,用户可以在其中粘贴代码并选择其中一种预设语言(C#、VB.NET、Python、Ruby 等),并且我需要验证代码是否可以编译成功地。如果没有,那么我需要用行号显示错误和警告。

我该怎么做?

【问题讨论】:

    标签: asp.net .net compilation roslyn


    【解决方案1】:

    您需要托管各种您希望支持和​​使用其 API 的编译器。如果编译器不公开 API,则需要使用 System.Diagnostics.Process 启动它并获取输出以进行解析。

    不过,这远非一项微不足道的任务。
    如果您确信自己需要这个,请问自己几个问题。

    • 您计划支持哪些语言、平台和语言? Python 和 Ruby,您是指它们的 .NET 版本还是要使用它们的标准编译器?哪些版本?
    • 这些编译器是否有任何公共 API?您是否需要将它们作为可执行文件运行?
    • 如果该站点将被许多用户同时使用,您打算如何分配负载?编译是一个密集的过程,有很多人这样做会使您的服务器过载。另请注意,编译总是需要时间,因此您需要考虑如何将其呈现给用户。您希望它立即启动还是要将用户排入队列?
    • 什么是用户编码范围?用户输入是否仅限于一种方法内容,还是用户必须编写整个文件?系统是否默认添加任何代码?你如何解决参考,例如对于 C# 代码?是否默认引用了某些库?

    而这只是冰山一角。

    回答您的评论,是的,有一个用于 C# 和 VB .NET 的编译器 API,称为 CodeDOM
    网络上有很多关于它的信息。您可能还想查看this question

    【讨论】:

    • 如果我想从 C# 和 VB.NET 开始,您是否知道是否有 API 公开给我进行编译?
    【解决方案2】:

    您可能想看看昨天发布的 http://msdn.microsoft.com/en-us/roslyn 上的 Roslyn 项目(以前称为编译器即服务)。这是用于 C# 和 VB 的新编译器 API。它对 Python 或 Ruby 没有帮助,但一旦发布(发布 Dev 11)就可以满足 C# 和 VB 的需求。

    【讨论】:

      【解决方案3】:

      对于 C# 和 VB,使用 Roslyn CTP 创建一个 Compilation 对象,然后调用 GetDiagnostics() 方法来确定错误。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-12
        • 1970-01-01
        相关资源
        最近更新 更多