我期待使用以下代码获取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;
}
}
我正在尝试在变量源中读取源代码并在CompileAssemblyFromSource
类的CSharpCodeProvider
方法中传递它。
我在结果变量下遇到以下错误。
c:\ Users \ username \ AppData \ Local \ Temp \ 2rdqotiv.0.cs(3,14):错误CS0234:名称空间'System'中不存在类型或命名空间名称'Linq'(是你吗?缺少程序集引用?)。
任何人都可以帮我解决这个错误吗?我正在使用MVS 15。
答案 0 :(得分:0)
您必须添加引用的程序集,例如:
parameters.ReferencedAssemblies.Add(typeof(Enumerable).Assembly.Location);
您也可以手动添加组件,如下所示:
string exDir = $@"C:\WINDOWS\Microsoft.NET\Framework\v{ver}";
parameters.CompilerOptions = $"/lib:{exDir}";
顺便说一句,您也可以使用CompileAssemblyFromFile
而不必手动打开文件。