我在项目中添加了一个XML文件,我将其用作数据库。 我已将其设置为嵌入式资源。 在我的开发环境中,一切正常。
但是当我发布它并将其安装到我的机器中时,XML文件不会自动复制到安装路径,因此它开始提供无法找到文件的错误。
使用XML文件在Windows应用程序中存储和检索数据的正确方法是什么?我做错了什么?
提前致谢!
答案 0 :(得分:1)
找到了解决方案!
我所做的是,将我的xml文件资源类型设为Content
并将Copy to Output Directory
设置为Copy Always
,以便根据@tencntraze评论进行编辑。
但是,在我发布并安装它时,我试图读取FileNotFoundException
时仍然会抛出相同的异常。
然后我找到了主要技巧,我去了
属性>发布(标签)>应用程序文件(按钮)>我的文件Publish Status
已从Data File
更改为Include
它有效!
谢谢!
答案 1 :(得分:0)
嵌入式资源的重点在于它不会复制到输出目录,而是嵌入在可执行文件中。最快的解决方案是改变逻辑以从程序集中读取(请注意,这假设它嵌入在与可执行文件相同的程序集中):
using (Stream stream = this.GetType().Assembly.GetManifestResourceStream(filename)) // Needs to account for folder paths, etc
{
using (StreamReader sr = new StreamReader(stream))
{
string xml = sr.ReadToEnd();
// Do stuff
}
}
编辑:This SO question很好地涵盖了这个主题,基本上是相同的代码(伟大的思想......),但更好地解释了如何使用它以及需要注意的事项。