CSharpCodeProvider“字符串”不包含“选择”的定义 CSCC遇到System.Linq

问题描述

我正在尝试使用 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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)