ProcessStartInfo info = new ProcessStartInfo(@"D:\\ss\\Class1.cs");
私はこのタイプのコードを持っていますが、ソリューションコード内のクラスの数がクラスの数をカウントし、c#のコードごとに名前を取得するような「クラス名」を取得したいと思います。
ProcessStartInfo info = new ProcessStartInfo(@"D:\\ss\\Class1.cs");
私はこのタイプのコードを持っていますが、ソリューションコード内のクラスの数がクラスの数をカウントし、c#のコードごとに名前を取得するような「クラス名」を取得したいと思います。
あなたがやろうとしていることは関係しませんProcessStartInfo
。これにアプローチする方法は2つあります。コンパイルされている場合は、アセンブリをロードし、リフレクションを使用してアセンブリを検査します(someAssembly.GetTypes()
これは良いスタートです)。または、ソースコード(コンパイルされていない)を検査するために、Roslyn CTPを使用してプロジェクト/ソリューション/クラスファイルをロードし、分析ツリーを検査することができます。
私が間違っていない場合は、ソリューションに存在するすべてのクラスを検索して、クラス名を取得する必要があります。
これが擬似コードです
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;
}
}
}
}