2017-04-07 44 views
1

我想在我的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

回答

3

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

而且r組成,用於引用組件。對於使用,只需使用關鍵字。但是Sysyem.Linq應該是默認導入的命名空間。

+0

謝謝!我甚至在Visual Studio中編譯了C#代碼,以便將其與整個時間進行比較並錯過。 – Max