0
ProcessStartInfo info = new ProcessStartInfo(@"D:\\ss\\Class1.cs");

私はこのタイプのコードを持っていますが、ソリューションコード内のクラスの数がクラスの数をカウントし、c#のコードごとに名前を取得するような「クラス名」を取得したいと思います。

4

2 に答える 2

3

あなたがやろうとしていることは関係しませんProcessStartInfo。これにアプローチする方法は2つあります。コンパイルされている場合は、アセンブリをロードし、リフレクションを使用してアセンブリを検査します(someAssembly.GetTypes()これは良いスタートです)。または、ソースコード(コンパイルされていない)を検査するために、Roslyn CTPを使用してプロジェクト/ソリューション/クラスファイルをロードし、分析ツリーを検査することができます。

于 2013-01-02T09:30:38.890 に答える
0

私が間違っていない場合は、ソリューションに存在するすべてのクラスを検索して、クラス名を取得する必要があります。

これが擬似コードです

1-すべてのソリューションで*.csファイルを検索します。

string[] files = System.IO.Directory.GetFiles(path, "*.txt");

2-すべての*.csファイルをループして、次のパターンを検索します

namespace [WhatEver the name is]
{
    public class [Class Name]

使用できるコードは次のとおりです

foreach(string path in files)
{
    string[] lines = System.IO.File.ReadAllLines(path);
    for (int i=0; i < lines.Count(); i++)
            {
                if(lines[i].ToLower().Contains("namespace"))
                {
                    int j = i + 2;
                    if(lines[j].ToLower().Contains("public class"))
                    {
                       string lClassname = lines[j].Replace("public class","");
                       //Save the class name here
                       break;
                    }
                }
            }
}
于 2013-01-02T09:42:43.857 に答える