我有一个存储一些网站链接的文件。到现在为止我用过:
string path = Environment.CurrentDirectory + "/forumlinks.txt";
但是我想将文件存储在release文件夹中,以便我可以更改它,我知道它将永久地为用户更改。
所以我改为:
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"/forumlinks.txt";
但我得到一个例外:
System.IO.FileNotFoundException。
我的问题:这是从release文件夹中获取文件的正确方法吗?我应该重新考虑并将他存放在不同的地方吗?如果是这样,我会很高兴听到它。
答案 0 :(得分:4)
我没有看到你需要调用
的原因System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location))
完全没有。这就是诀窍:
AppDomain.CurrentDomain.BaseDirectory
答案 1 :(得分:1)
好吧假设前锋/是一个错字。 如果你已经将测试文件添加到你的项目中,检查它的属性,需要复制,如果更新/复制总是将它放在bin \ Debug或bin \ Release中,使用exe和dll以及其他gubbins。
为什么你这样做,你是否计划改变文件,而不必重建应用程序?
答案 2 :(得分:1)
对代码发布文件夹的路径进行硬编码很危险。如果由于某种原因想要在调试模式下构建怎么办?如果要部署程序会发生什么?
更好的选择是使用环境的应用程序数据文件夹。这对每个用户都是不同的,因此这意味着每个用户都可以拥有自己的文件版本。
有关如何获取应用程序数据文件夹的详细信息,请参阅this post。
答案 3 :(得分:0)
我犯了一个错误,发现使用这段代码是正确的:
string path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\fourmlinks.txt";
如果你输入正确的文件名,仍然会得到一个异常,意味着该文件不在正确的位置。