2017-06-16 147 views
2

也許是轉儲問題。 Cake聲明其可以用C#編寫的構建自動化系統。我實際上正在玩一下,現在想知道是否可以在build.cake中調用.Net方法。當時我已經下面build.cake:Cake(C#make)在build.cake中使用.Net Framework方法

var target = Argument("target", "Default"); 
 

 
Task("NuGet") 
 
    .Does(() => 
 
    { 
 
     // Get local directory 
 
     // Get all packages.config files in local directory 
 
     // Call nuget restore for every file 
 
     var currentDir = System.IO.GetCurrentDirectory(); // This doesn't work 
 
     var allPgkConfigs = System.IO.Directory.GetFiles(currentDir, "packages.config", System.IO.SearchOption.AllDirectories); // This doesn't work 
 

 
     foreach (var pgk in allPgkConfigs) 
 
     { 
 
      // GetNuGetPackageId(pkg); 
 
     } 
 
     
 
    }); 
 

 
Task("Build") 
 
    .Does(() => 
 
{ 
 
    MSBuild("MySolution.sln"); 
 
}); 
 

 
RunTarget(target);

當調用build.ps1 -target nuget我得到以下錯誤:

PS C:\> .\build.ps1 -Target nuget 
Preparing to run build script... 
Running build script... 
Analyzing build script... 
Processing build script... 
Compiling build script... 
Error: C:/Users/Mewald-T550/XAP_Playground/build.cake(6,26): error CS0234: The type or namespace name 'GetCurrentDirectory' does not exist in the namespace 'System.IO' (are you missing an assembly reference?) 

蛋糕已經規定,它不能找到System.IO我該如何添加這個參考蛋糕?

我知道蛋糕提供了一些內置的file operations,但我想知道如何將.Net Framework方法添加到Cake腳本中。

THX

回答

3

你在一個命名空間中調用一個方法

變化

System.IO.GetCurrentDirectory() 

System.IO.Directory.GetCurrentDirectory() 

嘗試這個腳本和它的工作只是罰款

var directory = System.IO.Directory.GetCurrentDirectory(); 
Information(directory); 

也就是說,蛋糕內置了

多個IO抽象即這將實現相同的:

var allPgkConfigs = GetFiles("./**/packages.config"); 
foreach (var pgk in allPgkConfigs) 
{ 
    // GetNuGetPackageId(pkg); 
} 

如果你只是想在當前目錄下,你可以使用

Context.Environment.WorkingDirectory 

或只是

var curDir = MakeAbsolute(Directory("./")); 
Information("Current directory is: {0}", curDir); 
0

參考指令 。

用法 指令有一個參數,它是要加載的dll的路徑。

#r "bin/myassembly.dll" 
or 
#reference "bin/myassembly.dll" 

嘗試使其指向C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ System.IO.dll

相關問題