无法在运行时从C#中的Project \ Data文件夹加载文档

时间:2011-11-08 15:48:47

标签: c# wpf xml

我正在尝试加载Project \ Data中的XML文档,如下所示:

            XmlDocument memoryDoc = new XmlDocument();
            memoryDoc.Load(@"Data/Memories.xml");
            XmlNode xmlNode_Memories = memoryDoc.SelectSingleNode("Memories");
            XmlElement xmlElement_Memory = memoryDoc.CreateElement("Memory");
            xmlElement_Memory.SetAttributeNode("Title", "");
            xmlElement_Memory.SetAttribute("Title", "hijdnjh9d2qhei");
            xmlNode_Memories.AppendChild(xmlElement_Memory);
            memoryDoc.Save(@"Data/Memories.xml");

但程序正试图从Project \ bin \ Debug \ Data加载它,它不存在,并且它哭了。如何从Project \ Data加载它而不必包含完整路径,即使仅用于测试目的?

在将程序打包到安装程序中时,这会导致问题,因此要求我在加载前将文件复制到其他位置吗?

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为您的exe是从Project \ bin \ debug目录运行的(当您在Visual Studio中按F5 / Run / Debug时,这是您的构建输出所在的位置,假设您正在进行调试构建。

如果要避免使用硬编码路径,可以使用post build事件将文件复制到Project \ bin \ debug \ data目录。

右键单击解决方案资源管理器中的项目,然后选择属性。转到“构建事件”选项卡。这有点像编写批处理文件,您可以从那里复制文件。 (单击“编辑”,然后按“宏”按钮 - 有提供路径的扩展变量)

命令看起来像(从内存中,所以可能有点偏离):

copy $(ProjectDir)\Data\Memories.xml $(TargetDir)\data\.