1

我有一个存储一些站点链接的文件。直到现在我使用:

string path = Environment.CurrentDirectory + "/forumlinks.txt";

但我想将文件存储在发布文件夹中,以便我可以更改它,我知道它将为用户永久更改。

所以我改成这样:

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"/forumlinks.txt";

但我得到一个例外:

System.IO.FileNotFoundException。

我的问题:这是从发布文件夹中获取文件的正确方法吗?我应该重新考虑一下并将他存放在不同的地方吗?如果是这样,我会很高兴听到这件事。

4

4 回答 4

4

我不明白你为什么需要打电话给

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)) 

一点也不。这可以解决问题:

AppDomain.CurrentDomain.BaseDirectory
于 2012-10-17T21:47:45.193 回答
1

好吧,假设前锋 / 是一个错字。如果您已将测试文件添加到您的项目中,请检查它的属性,如果较新则需要复制 / 始终复制以将其放入 bin\Debug 或 bin\Release,以及 exe 和 dll 以及其他 gubbins。

你为什么要这样做,你是否打算改变文件,而不必重建应用程序?

于 2012-10-17T21:46:21.523 回答
1

硬编码代码发布文件夹的路径是危险的。如果您出于某种原因想在调试模式下构建怎么办?当你想部署你的程序时会发生什么?

更好的选择是使用环境的应用程序数据文件夹。这对于每个用户来说都是不同的,因此这意味着每个用户都可以拥有自己的文件版本。

有关如何获取应用程序数据文件夹的详细信息,请参阅此帖子。

于 2012-10-17T21:50:04.783 回答
0

我犯了一个错误,发现使用这段代码是正确的:

string path =  System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\fourmlinks.txt";

如果你输入了正确的文件名,但仍然得到一个异常,这意味着文件不在正确的位置。

于 2012-10-17T21:46:11.347 回答