はこれを行い、どのプロセスから起動されたディレクトリを示します):。
using System.Runtime.CompilerServices;
private static string GetThisFilePath([CallerFilePath] string path = null)
{
return path;
}
var path = GetThisFilePath(); // path = @"path\to\your\source\code\file.cs"
var directory = Path.GetDirectoryName(path); // directory = @"path\to\your\source\code"
をどのように動作します: Roslynの特別CallerFilePath
、CallerLineNumber
、およびを認識し、アトリビュート(MVVMプログラミングをやったことがある場合は、最後のアトリビュートがよく見えます)。コンパイル時には、これらの属性でマークされたパラメータに、呼び出し元の実際のファイルパス/行番号/メンバ名が設定されます。あなたは上記のコードをコンパイルし、コンパイルした場合、path
への割り当ては、通常、ソースコードは、* *それを実行しているマシン上ではありません
var path = GetThisFilePath(@"path\to\your\source\code\file.cs");
次のようになります - それは、開発者であることのちょうど特権だ...あなた*できるだけビルドマシンからのパスを得ることができます。 –
@MarcGravell良い点。ええ、これは生産コード用ではありません。コンパイルした同じマシンでコードを実行しているときだけです。 –