我正在尝试使用 CSharpCodeProvider 来编译一段代码。
错误是:
c:\...\crust.cs(551,48) : error CS1061: 'string' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
正在编译的代码是:
using System;
...
using System.Linq;
...
return new string(str.Substring(1).Select(character => (char)((character - 54545) ^ key)).ToArray());
...
编译源代码如下:
...
String exeName = String.Format("NAME.exe");
CompilerParameters cp = new CompilerParameters
{
GenerateExecutable = true,
GenerateInMemory = false,
OutputAssembly = "NAME.exe",
CompilerOptions = "/target:exe /platform:x64"
};
cp.ReferencedAssemblies.Add("System.dll");
...
cp.ReferencedAssemblies.Add("System.Linq.dll");
cp.GenerateExecutable = true;
cp.OutputAssembly = exeName;
cp.GenerateInMemory = false;
cp.TreatWarningsAsErrors = false;
CompilerResults cr = provider.CompileAssemblyFromFile(cp,
sourceName);
...
其他 system.linq 方法也不起作用。
注意事项: 编译器是64位的 正在将源编译为 64 位 编译器在 .net framework 4.0 源代码正在编译为 .net 4.0
最佳答案
可能是因为您还没有为“System.Linq”包声明 using 语句:
using System.Linq;
在 cs 文件中检查并确保明确声明了 using 语句。
关于c# - CSharpCodeProvider "string"不包含 "Select"的定义。 CSCC 遇到 System.Linq 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64622158/