我正在尝试加载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加载它而不必包含完整路径,即使仅用于测试目的?
在将程序打包到安装程序中时,这会导致问题,因此要求我在加载前将文件复制到其他位置吗?
答案 0 :(得分:0)
这种情况正在发生,因为您的exe是从Project \ bin \ debug目录运行的(当您在Visual Studio中按F5 / Run / Debug时,这是您的构建输出所在的位置,假设您正在进行调试构建。
如果要避免使用硬编码路径,可以使用post build事件将文件复制到Project \ bin \ debug \ data目录。
右键单击解决方案资源管理器中的项目,然后选择属性。转到“构建事件”选项卡。这有点像编写批处理文件,您可以从那里复制文件。 (单击“编辑”,然后按“宏”按钮 - 有提供路径的扩展变量)
命令看起来像(从内存中,所以可能有点偏离):
copy $(ProjectDir)\Data\Memories.xml $(TargetDir)\data\.