获取当前项目中文件的文件路径

17

如何以编程方式获取项目中文件的文件路径?

 string fileContent = File.ReadAllText(LocalConstants.EMAIL_PATH);

我将一个文本文件添加到了我的项目中作为EMAIL_PATH。这行代码会抛出异常,因为默认情况下它会在system32文件夹中查找某些内容。我需要将其设置为项目目录。


你需要应用程序目录吗? - Adriano Repetti
我将一个文本文件添加到我的项目中。我需要那个目录。 - Nick LaMarca
项目的根目录是我需要的。 - Nick LaMarca
你是否正在尝试将一个txt文件嵌入到你的可执行文件中? - banging
3个回答

30

你可以使用Path.CombineAppDomain.CurrentDomain.BaseDirectory

string fileName = "SampleFile.txt";
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalConstants.EMAIL_PATH, fileName);

在调试模式下的测试项目中,当 LocalConstants.EMAIL_PATH="Emails" 时,返回此路径:

C:\****\****\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsFormsApplication1\bin\Debug\Emails\SampleFile.txt

这段代码指向 bin/Debug 文件夹。EMAIL_PATH 位于项目的根文件夹中。 - Nick LaMarca
1
也许我的问题是我必须将文本文件设置为复制到输出。那是标准操作吗? - Nick LaMarca
1
@NickLaMarca:你是指的http://stackoverflow.com/a/857473/284240吗?也许是,这取决于您的确切要求。 - Tim Schmelter

0

这个对我有用 System.AppDomain.CurrentDomain.BaseDirectory.ToString()


0

它将指向您的工作目录。我刚在测试控制台应用程序上运行了一个演示,输出为:“c:\ users \ duane \ documents \ visual studio 2010 \ Projects \ EnvironmentDemo \ EnvironmentDemo \ bin \ Debug”,您能否发布此属性返回的字符串? - dtsg
1
当前目录并不总是您的应用程序目录。如果它是一个支持文件,那么假设它是不安全的。 - Adriano Repetti
错误!这是当前工作目录,而不是你的项目正在服务的目录。 - Meekohi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接