【发布时间】:2016-03-01 23:17:40
【问题描述】:
我创建了一个 WFA 应用程序,并决定在我的 PC 上对其进行测试,因此我为它制作了一个安装程序。我的程序正在与同一文件夹中的 .txt 文件协作,因此在我的代码中,我通过 AppDomain.CurrentDomain.BaseDirectory 获取其执行路径并将其添加到“myTxt.txt”以获取 txt 路径。然后我通过 File.ReadAllLines() 读取它的内容到我的字符串数组。
string path = AppDomain.CurrentDomain.BaseDirectory;
string text = String.Concat(path,"mytxt.txt");
string[] content = File.ReadAllLines("mytxt.txt") // relative path
问题来了。每当我的程序设置在“程序文件”中时,我都可以打开 .txt 但没有内容加载到数组中。否则,当它在 Program files(x86) 中设置时,一切正常。为什么会这样?我该如何解决这个问题?
【问题讨论】:
-
我建议在第二行使用
System.IO.Path.Combine而不是String.Concat。不过我不明白你的代码,你为什么要找到完整的路径,然后不在下一行使用它?当您使用text作为参数值时会发生什么? -
完整路径是用来判断mtxt.txt文件是否存在还是应该创建一个
-
如果您的 EXE 的平台目标是 AnyCPU 或 x64,您只能将程序存储在 c:\program 文件中。因此它将在 64 位操作系统上作为 64 位进程运行。默认值为 x86,任何文件打开请求都将被重定向到 c:\program files (x86)。通过右键单击您的 EXE 项目 > 属性 > 构建选项卡 > 平台目标设置来修复它。如果您看到它,请取消勾选“首选 32 位”。或者当然,将您的程序存储在 32 位目录中。
-
谢谢汉斯,已经解决了:)