我有一个带有一个文件夹的应用程序,我通过右键单击项目添加,选择添加文件夹。在这个文件夹里面我有xml文件,它们被设置为构建动作:内容,复制到输出目录:如果更新则复制(我已经尝试设置为嵌入式资源)以及我有一些文本文件等等。
在我的bin / debug输出目录中,我有exe,包含xml的文件夹,独立的.txt文件等等。我的问题是,如果我将exe发送给我的朋友尝试他总是会抛出异常。
假设他将exe放在桌面上,我的程序在某个时刻读取文件夹中xml文件的文件名。它使用以下代码来执行此操作
String[] filePaths = Directory.GetFiles(@"DataSources\");
我认为因为这个,当exe从桌面运行时,它希望.xml文件的文件夹在同一个地方?尝试读取.txt文件时,我有相同类型的异常。我在这做错了什么?
感谢您的时间
答案 0 :(得分:1)
您是否尝试过类似:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspx或http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx?
的内容所以 Directory.GetFiles(environment.currentdirectory + @“\ DataSources \”);
答案 1 :(得分:1)
使用相对路径从文件读取时,您将获得相对于应用程序当前目录的文件。 提示:在C#中,您可以看到使用Environment.CurrentDirectory
的目录。
因此,如果您在桌面上创建快捷方式,则需要确保右键单击快捷方式并将其“开始”文件夹设置为应用程序的目录。这样它的当前目录将在其开始时设置,相对路径将相对于该路径而不是快捷方式的路径。
如果你真的将exe文件移动到桌面,你还需要移动它需要的任何资源,所以如果它想要一个名为“datasources”的文件夹,你也必须移动该文件夹,或者设置当前目录你启动了这个应用程序。