2017-09-06 3 views
2

ケーキスクリプトでユーザーディレクトリのパス(絶対パス)を使用して、ビルドエージェントのナゲットキャッシュをドッキングコンテナーにマウントし、アプリケーションをビルドします。どうすれば入手できますか?ケーキビルドでユーザーディレクトリを取得する方法

Directory("~") 

は機能しません。

+0

これはエラーを与えていますか?それとも道を与えないのですか? 'var curDir = MakeAbsolute(Directory("〜 "));' –

+0

いいえ、エラーはありません。情報( ''〜 '') ''と ''情報(MakeAbsolute(Directory( "〜")))は '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のビルドエージェントを持っている)で実行したいので、ユーザのホームディレクトリの絶対パスが必要です。ドッカーのイメージは、Linuxの.Net Coreビルドシステムに基づいています。だから私はソースコード、ナゲットキャッシュとナゲット設定(プライベートフィード)でボリュームを渡す必要があります。最後の2つは、デフォルトでビルドエージェントのユーザディレクトリ(WindowsおよびUnix上)に保存されます。 – WebDucer

関連する問題