C# CSharpCodeProvider“;“字符串”;不包含“的定义”;选择";。CSCC与System.Linq存在问题
我正在尝试使用CSharpCodeProvider编译一段代码 错误是:C# CSharpCodeProvider“;“字符串”;不包含“的定义”;选择";。CSCC与System.Linq存在问题,c#,.net,.net-4.0,csharpcodeprovider,C#,.net,.net 4.0,Csharpcodeprovider,我正在尝试使用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 dire
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位
编译器位于.NETFramework 4.0中
源代码正在编译到.net 4.0是否检查了CSharpCodeProvider的Linq依赖版本?可能它的版本不接受第一个参数为string的Select方法