0

私はこのアイデアを思いつきました。人々がC#を学ぶのを助けるためにビジュアルスタジオをシミュレートするプログラムを作成することです。w3schools.comの「自分で試してみる」機能のようなものになります

たとえば、ユーザーがコードを入力できるテキストボックスがあります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

しかし、ここで注意が必要な部分があります。たとえば、ユーザーがSynthaxエラーをコミットした場合、Visual Studioのようにエラーを表示したい場合、またはユーザーが[確認]ボタンをクリックした場合、コードが間違っている場合は、 dVisualStudioが表示されるのと同じエラーが発生します。出来ますか?

4

2 に答える 2

1

答えてくれてありがとう。探していたものを見つけました。私がやりたかったのは、ユーザーがテキストボックスにコードを入力できるようにすることです。ユーザーが「生成」ボタンをクリックすると、コードがコンパイルされ、.exeが生成されます。いくつかの調査の後、iveはこのクラスを見つけました:

CSharpCodeProvider codeProvider = new CSharpCodeProvider();

.exeまたはdllを生成するためにいくつかのパラメーターを設定し、コンパイルするコードとして文字列を送信できます。エラーがある場合は、次のようにしてエラーを検出できます。

 if (results.Errors.Count > 0)
{
                {
                    foreach (CompilerError CompErr in results.Errors)
                    {
                        txtErro.Text = txtErro.Text +
                            "Line number " + CompErr.Line +
                            ", Error Number: " + CompErr.ErrorNumber +
                            ", '" + CompErr.ErrorText + ";" +
                            Environment.NewLine + Environment.NewLine;
                    }
                }
}

これが他の人にも役立つことを願っています。どうもありがとう!

于 2012-08-14T15:49:48.953 に答える
0

可能だと思いますが、リフレクションを使わなければなりません。これにより、ランタイムをコンパイルできるC#コードを動的に作成できます。しかし、それはかなり進んでいますが、私が知る限り、それは可能です。

次のリンクが役立つ場合があります。

実行時に動的にDLLアセンブリを生成する

あなたが本当に欲しいのは:

サービスとしてのコンパイラの利点は何ですか

しかし、afaikこれは現在利用できません。また、デバッグ機能は利用できません。おそらくデバッグなどでVSの新しいインスタンスを実行できますが、少しやり過ぎかもしれません。

于 2012-08-14T14:04:10.727 に答える