150

.exeをコピーすれば新しいパスを取得できるため、どのようにして.exeパスを取得できますか。

4 답변


188

System.Reflection.Assembly.GetEntryAssembly().Location;


  • 私は唯一のパスが欲しいのですが、私はこのコマンドが私にexeのパス+ファイル名を与えるのを見ます。 :-(一方、GetEntryAssembly()。Locationはパスに" file://"を付けたものです。AppDomain.CurrentDomain.BaseDirectory - user799821
  • これは単体テストプロジェクトでは機能しません。 GetEntryAssembly()がnullです。 - Eric J.
  • System.Reflection.Assembly.GetExecutingAssembly()。Locationは、実行中のアセンブリが現在置かれている場所を返します。実行されていないときは、アセンブリが置かれている場所である場合とそうでない場合があります。シャドウコピーアセンブリの場合は、一時ディレクトリにパスを取得します。 System.Reflection.Assembly.GetExecutingAssembly()。CodeBaseは、永続的な'を返します。アセンブリのパス - Cyrus
  • @ user799821そのまま使うPath.GetDirectoryNameファイル名なしでフォルダを取得します。 - ProfK
  • @ProfK:ありがとう、それこそまさに私が必要としていたものです。完全な解決策は私のために働いた:System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase) - SnookerC

95

加えて:

AppDomain.CurrentDomain.BaseDirectory
Assembly.GetEntryAssembly().Location


  • AppDomain.CurrentDomain.BaseDirectoryは、単体テストプロジェクトで機能します。 - Eric J.
  • Assembly.GetEntryAssembly().Location私のために働きます。最初のものはfile;\ 2番目のものは実行中の.exeの絶対ファイルパスを提供します。追加するSystem.IO.Path.GetDirectoryName()パスだけを取得する - CraftedGaming

55

Windowsフォームプロジェクトの場合:

フルパス(ファイル名を含む)の場合string exePath = Application.ExecutablePath;

パスのみの場合:string appPath = Application.StartupPath;


  • " Application.StartupPath"は"作業ディレクトリ"によって影響を受けます。 exeショートカットに設定されている場合、または別のアプリからプロセスが開始されている場合 - Pedro77

2

visualstudio 2008では、このコードを使用できます。

   var _assembly = System.Reflection.Assembly
               .GetExecutingAssembly().GetName().CodeBase;

   var _path = System.IO.Path.GetDirectoryName(_assembly) ;


  • それは本当に正しい答えではありません。 「file:// foo」のような文字列が表示されます。 - dyatchenko
  • またそれはArgumentExceptionで終わるでしょうSystem.IO.Path.GetDirectoryName - benderto

リンクされた質問


関連する質問

最近の質問