在Cake脚本中找不到Linq扩展方法

问题描述:

我想在我的Cake脚本中使用Linq扩展方法,但无法找到扩展方法。在Cake脚本中找不到Linq扩展方法

这里是我的脚本:

#r System.Linq 

Task("Default").Does(() => 
{ 
    var test = new List<string>() {"a", "b", "c"}; 
    test.OrderByDesc(x => x); 
}); 

RunTarget(target); 

我已经尝试了很多的参考System.Link不同的方式 - 如添加.dll或者其包装上的报价。他们都似乎工作。如果我将其设置为不正确的引用,例如System.Link,那么在执行带有“未找到程序集”的脚本时,安装加载项时会出现错误。

以下是完整的输出我得到:如果我运行这个没有--experimental

PS C:\git\CakeEFTest\CakeTest> ./build.ps1 --experimental 
Preparing to run build script... 
Running build script... 
Analyzing build script... 
Processing build script... 
Compiling build script... 
Error: C:/git/CakeEFTest/CakeTest/build.cake(6,7): error CS1061: 
    'List<string>' does not contain a definition for 'OrderByDesc' 
    and no extension method 'OrderByDesc' accepting a first argument 
    of type 'List<string>' could be found (are you missing a using 
    directive or an assembly reference?) 

我得到相同的结果。

根据蛋糕库中的问题,这应该按预期工作:https://github.com/cake-build/cake/issues/1331

的LINQ扩展方法被称为OrderByDescending()https://msdn.microsoft.com/en-us/library/bb548916(v=vs.110).aspx

而且r组成,用于引用组件。对于使用,只需使用关键字。但是Sysyem.Linq应该是默认导入的命名空间。

+0

谢谢!我甚至在Visual Studio中编译了C#代码,以便将其与整个时间进行比较并错过。 – Max