嵌入式资源XML文件未在安装文件夹上复制

时间:2014-02-26 21:23:11

标签: xml winforms

我在项目中添加了一个XML文件,我将其用作数据库。 我已将其设置为嵌入式资源。 在我的开发环境中,一切正常。

但是当我发布它并将其安装到我的机器中时,XML文件不会自动复制到安装路径,因此它开始提供无法找到文件的错误。

使用XML文件在Windows应用程序中存储和检索数据的正确方法是什么?我做错了什么?

提前致谢!

2 个答案:

答案 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很好地涵盖了这个主题,基本上是相同的代码(伟大的思想......),但更好地解释了如何使用它以及需要注意的事项。