【问题标题】:How to get Path previous to Exceuting Assembly如何获取执行程序集之前的路径
【发布时间】:2009-06-29 07:09:23
【问题描述】:

我有一些文件位于

c:\MyApp\file.txt

和当前在 debud 文件中执行的组装

c:\MyApp\bin\Debug\

我想在运行时获取上述“file.txt”的地址..

我试过了

Assembly.GetExecutingAssembly().Location

它给了我 c:\MyApp\bin\Debug\MyApp.exe

如何获取“file.txt”的地址

【问题讨论】:

    标签: .net directory


    【解决方案1】:

    “Debug”文件夹(和“Release”文件夹)是项目构建的实际输出。如果您没有在项目中包含 file.txt 并将其标记为“复制到输出目录”,则它不会算作构建输出的一部分,并且您的应用不应尝试加载它。

    基本上,只需将“复制到输出目录”设置为“始终复制”或“如果较新则复制”,并继续使用路径"file.txt"

    【讨论】:

      【解决方案2】:

      你不能,因为文件和编译的应用程序没有关系。如果您将 MyApp.exe 移到其他地方会怎样?

      你有两个选择:

      1. 将 file.txt 作为内容文件包含在您的项目中(它将包含在输出中,并且与 MyApp.exe 位于同一文件夹中)
      2. 使用配置 - 允许用户选择定义文件的位置。例如,您可以为此使用 AppSettings。

      好吧,从技术上讲,您可以,因为您始终可以导航到当前目录的父目录(“MyAppPath\..”),但这确实是个坏主意...

      【讨论】:

        【解决方案3】:

        您的可执行文件夹路径可以通过以下方式检索:

        AppDomain.CurrentDomain.BaseDirectory
        

        为了得到你想要的,你可以执行以下操作

        string fileTxtPath = AppDomain.CurrentDomain.BaseDirectory + "..\\file.txt";
        

        当然,如果您有一个与您的项目相关的文件,那么您应该将它包含在与您的可执行文件相同的文件夹中。在 Visual Studio 中右键单击它并转到属性,然后在“复制到输出目录”选项中选择“始终复制”选项。

        【讨论】:

          猜你喜欢
          • 2010-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-14
          相关资源
          最近更新 更多