【发布时间】: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”的地址
【问题讨论】:
我有一些文件位于
c:\MyApp\file.txt
和当前在 debud 文件中执行的组装
c:\MyApp\bin\Debug\
我想在运行时获取上述“file.txt”的地址..
我试过了
Assembly.GetExecutingAssembly().Location
它给了我 c:\MyApp\bin\Debug\MyApp.exe
如何获取“file.txt”的地址
【问题讨论】:
“Debug”文件夹(和“Release”文件夹)是项目构建的实际输出。如果您没有在项目中包含 file.txt 并将其标记为“复制到输出目录”,则它不会算作构建输出的一部分,并且您的应用不应尝试加载它。
基本上,只需将“复制到输出目录”设置为“始终复制”或“如果较新则复制”,并继续使用路径"file.txt"
【讨论】:
你不能,因为文件和编译的应用程序没有关系。如果您将 MyApp.exe 移到其他地方会怎样?
你有两个选择:
好吧,从技术上讲,您可以,因为您始终可以导航到当前目录的父目录(“MyAppPath\..”),但这确实是个坏主意...
【讨论】:
您的可执行文件夹路径可以通过以下方式检索:
AppDomain.CurrentDomain.BaseDirectory
为了得到你想要的,你可以执行以下操作
string fileTxtPath = AppDomain.CurrentDomain.BaseDirectory + "..\\file.txt";
当然,如果您有一个与您的项目相关的文件,那么您应该将它包含在与您的可执行文件相同的文件夹中。在 Visual Studio 中右键单击它并转到属性,然后在“复制到输出目录”选项中选择“始终复制”选项。
【讨论】: