2010-12-20 130 views
0

我有一个应用程序,我通过右键单击该项目添加一个文件夹,选择添加文件夹。在这个文件夹里面,我有设置为构建动作的xml文件:内容,复制到输出目录:复制如果更新(我尝试设置嵌入资源)以及这个我有几个文本文件等等。部署c#应用程序问题

在我的bin/debug输出目录中,我有exe,带有xml的文件夹,独立的.txt文件等等。我的问题是,如果我发送exe文件给我的朋友尝试,他总是得到一个异常抛出。

说他把exe放在桌面上,我的程序在某个时候读取文件夹中xml文件的文件名。它使用下面的代码这样做

String[] filePaths = Directory.GetFiles(@"DataSources\"); 

我认为正因为如此,当EXE从桌面上运行时,它期望的.xml文件的文件夹是在同一个地方?我也尝试读取.txt文件时遇到相同类型的异常。我在这里做错了什么?

感谢您的时间

+0

我设法通过制作一个安装工具包,将所需文件复制到一个输出目录与exe文件。我认为这更专业? – tom 2010-12-20 15:21:11

回答

1

使用相对路径从文件中读取时,会得到与应用程序当前目录相关的文件。 则提示:在C#中,您可以看到使用Environment.CurrentDirectory的目录。

因此,如果您在桌面上创建快捷方式,则需要确保右键单击该快捷方式并将其“开始” - 文件夹设置为您应用程序的目录。这样,当它的开始和相对路径将相对于该路径而不是快捷方式的路径时,其当前目录将被设置。

如果你实际上将exe文件移动到桌面上,你还需要移动它需要的任何资源,所以如果它想要一个名为“datasources”的文件夹,你也必须移动该文件夹,或者设置当前目录当你启动应用程序。

1

你有没有尝试过这样的:http://msdn.microsoft.com/en-us/library/system.windows.forms.application.executablepath.aspxhttp://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

所以 Directory.GetFiles(environment.currentdirectory + @“\ DataSources \”);

+0

不会说明我到达StreamReader时所得到的错误sr = new StreamReader(“txtfile.txt”); – tom 2010-12-20 14:56:40

+0

抛出什么异常? – 2010-12-20 15:02:47