从 C# 源代码中获取所有方法
Get all methods from C# source code
我期待使用以下代码获取 C# 中使用的所有方法名称:
CompilerParameters parameters = new CompilerParameters()
{
GenerateExecutable = false,
GenerateInMemory = true
};
var provider = new CSharpCodeProvider();
foreach (string path_file in files)
{
string source = File.ReadAllText(path_file);
Console.Out.WriteLine(source);
CompilerResults results = provider.CompileAssemblyFromSource(parameters, source);
if (results.Errors.HasErrors)
{
foreach (var error in results.Errors)
Console.Out.WriteLine(error.ToString());
return;
}
}
我正在尝试读取可变源中的源代码并将其传递到 CSharpCodeProvider
class 的 CompileAssemblyFromSource
方法中。
我在结果变量下收到以下错误。
c:\Users\username\AppData\Local\Temprdqotiv.0.cs(3,14) : error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?).
谁能帮我解决这个错误?我正在使用 MVS 15。
您必须添加引用的程序集,例如:
parameters.ReferencedAssemblies.Add(typeof(Enumerable).Assembly.Location);
也可以手动添加程序集,如下:
string exDir = $@"C:\WINDOWS\Microsoft.NET\Framework\v{ver}";
parameters.CompilerOptions = $"/lib:{exDir}";
顺便说一句,您也可以使用 CompileAssemblyFromFile
而不必手动打开文件。
我期待使用以下代码获取 C# 中使用的所有方法名称:
CompilerParameters parameters = new CompilerParameters()
{
GenerateExecutable = false,
GenerateInMemory = true
};
var provider = new CSharpCodeProvider();
foreach (string path_file in files)
{
string source = File.ReadAllText(path_file);
Console.Out.WriteLine(source);
CompilerResults results = provider.CompileAssemblyFromSource(parameters, source);
if (results.Errors.HasErrors)
{
foreach (var error in results.Errors)
Console.Out.WriteLine(error.ToString());
return;
}
}
我正在尝试读取可变源中的源代码并将其传递到 CSharpCodeProvider
class 的 CompileAssemblyFromSource
方法中。
我在结果变量下收到以下错误。
c:\Users\username\AppData\Local\Temprdqotiv.0.cs(3,14) : error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?).
谁能帮我解决这个错误?我正在使用 MVS 15。
您必须添加引用的程序集,例如:
parameters.ReferencedAssemblies.Add(typeof(Enumerable).Assembly.Location);
也可以手动添加程序集,如下:
string exDir = $@"C:\WINDOWS\Microsoft.NET\Framework\v{ver}";
parameters.CompilerOptions = $"/lib:{exDir}";
顺便说一句,您也可以使用 CompileAssemblyFromFile
而不必手动打开文件。