【问题标题】:How to get application path如何获取应用程序路径
【发布时间】:2011-04-09 17:50:07
【问题描述】:

我正在使用

string path = AppDomain.CurrentDomain.BaseDirectory; 获取我的应用程序路径,但这给出了类似

C:\Projects\XYZ\ABC\bin\Debug

我不想要 bin\Debug 。有什么方法可以实现吗?

【问题讨论】:

  • 您想要项目文件的位置还是正在运行的可执行文件的位置?
  • 请描述规则以获得预期结果
  • 在黑暗中射击 - @George,您是否尝试通过在 Visual Studio 下运行的程序访问项目目录中的配置文件或其他资源?如果是这样,您可以将它们设置为复制到构建目录,并且您的引用将正常工作。

标签: c# c#-4.0 c#-2.0


【解决方案1】:

得到你想要的:

var enviroment = System.Environment.CurrentDirectory;
string projectDirectory = Directory.GetParent(enviroment).Parent.FullName;

【讨论】:

  • 这是该问题的最佳答案。恭喜,弗雷迪
  • 靶心。为您提供项目的确切文件夹路径,而不是 bin/debug。谢谢弗雷迪
【解决方案2】:

AppDomain.CurrentDomain.BaseDirectory 属性获取程序集解析器用来探测程序集的基本目录。

所以它可以 100% 正常运行。如果您要构建应用程序,请将其剪切并粘贴到另一个文件夹或驱动器中的其他位置。这些更改将反映在此属性中。

另外,您提到您不想要这部分bin\Debug,所以您想要之前的内容?请具体。

【讨论】:

  • 是的,我想要 bin\Debug 之前的所有内容
  • @George:你意识到这将是硬编码的东西,而且根本不灵活,对吧?如果这正是您想要的,那没关系,但也许您应该编辑您的问题并详细解释您希望最终结果是什么。目标是什么?
【解决方案3】:

如果你想弄清楚你的应用程序可执行路径(据我所知):

string path = Application.ExecutablePath;

【讨论】:

  • 如果你想要应用程序路径,最好使用 Application.StartupPath :是一样的,但没有exeName
【解决方案4】:
string LPath;
string Location = AppDomain.CurrentDomain.BaseDirectory + "Reports\\rptEmployInfoStat.rpt";
int index;
index = Location.IndexOf("bin");
if (index > 0)
{
     LPath = Location.Remove(index, 10);
}
else
{
     LPath = Location;
}
rd.Load(@LPath);

【讨论】:

    【解决方案5】:

    说实话,这不是最好的做法,但这会给你想要的:

    string dir = System.IO.Directory.GetCurrentDirectory().Replace("\\bin\\Debug", "");
    

    【讨论】:

    • 如果应用程序在 IIS 上运行,这将无法正常工作,它会给出 IIS 的目录
    【解决方案6】:

    您在 IDE 中运行程序,这就是您获得这种路径的原因。尝试构建应用程序并在 IDE 之外运行它 - 您会看到该方法正常工作。

    编辑:您获得的是因为 IDE 运行您的应用程序的调试版本,该版本位于 $PROJECT_DIR\bin\Debug。

    【讨论】:

    • 与是否在调试器中运行无关。这是EXE的位置。调试版本默认进入<project_path>\bin\Debug,发布版本默认进入<project_path>\bin\Release。调试器无关紧要——严格来说,它是构建设置的属性。
    • @Joe:你打开了我的心扉,给我带来了千古的智慧。谢谢。
    【解决方案7】:

    我正在使用这个:

    String appSettingsPath = Directory.GetCurrentDirectory();
    
            if (!File.Exists(Path.Combine(appSettingsPath, "appsettings.json")))
                appSettingsPath = Path.GetDirectoryName(Path.GetDirectoryName(appSettingsPath));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-25
      • 2014-11-07
      • 1970-01-01
      • 2011-05-16
      • 2014-11-22
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多