2017-09-06 88 views
2

我需要我的蛋糕腳本中的用戶目錄路徑(絕對),以將構建代理的nuget緩存掛載到構建應用程序的docker容器。我如何得到它們?如何在蛋糕版本中獲取用戶目錄

Directory("~") 

不起作用。

+0

這是否給錯誤?或者不給路徑?此外,這工作'var curDir = MakeAbsolute(目錄(「〜」));' –

+0

沒有錯誤。 '信息(目錄(「〜」));'和'信息(MakeAbsolute(目錄(「〜」)));'返回兩個'〜'值,而不是'c:\ Users \ current_user?'。 – WebDucer

回答

2

通常,在Windows和* nix上,用戶主文件夾都存儲在環境變量中。在這種情況下,你應該能夠做這樣的事情:

Task("Default") 
.Does(() => 
{ 
    if(IsRunningOnWindows()) { 
     Information(EnvironmentVariable("HOMEPATH")); 
    } 
    else 
    { 
     Information(EnvironmentVariable("HOME")); 
    } 
}); 

假設上面包含你想要什麼,然後你可以在結果傳遞給Directory()

UPDATE:

嘗試以下操作:

Task("Default") 
    .Does(() => 
{ 
    if(IsRunningOnWindows()) { 
     Information("{0}{1}", EnvironmentVariable("HOMEDRIVE"), EnvironmentVariable("HOMEPATH")); 
    } else { 
     Information(EnvironmentVariable("HOME")); 
    } 
}); 
+0

在Windows上,返回'/ Users/current_user'作爲值。 'MakeAbsolute(目錄(pathFromEnv))'返回相同的。 Windows上的Docker需要'c:\ Users \ current_user'的正確語法。 – WebDucer

+0

所以要確認,你是在Windows上還是在* nix上運行? –

+0

我想在兩者上運行(我們有macOS和Windows構建代理),所以我需要用戶主目錄的絕對路徑。 Docker鏡像是基於Linux內核的.Net Core構建系統。所以我需要傳遞源代碼,nuget緩存和nuget config(私人提要)。最後兩個默認存儲在構建代理的用戶目錄中(在Windows和Unix上)。 – WebDucer