如何使用XDocument.Load()方法获取应用程序目录中的文件

7

我在项目的一个文件夹中有一个XML文件。我想使用XDocument.Load(string),但是我必须将完整路径作为URI的一部分写入代码中吗(例如在我的示例中)?

XDocument xml = XDocument.Load("c:/users/myuser/documents/visual studio
2010/Projects/ErrorRegistro/Registro.xml");

我认为你要么在寻找项目路径,要么在寻找程序集路径...无论哪种情况,这个问题可能会有所帮助..https://dev59.com/aGgu5IYBdhLWcg3wloAO - Kevin
2个回答

22

另一种绕过资源问题的方法是将文件添加到项目中(与资源解决方案相同),然后单击文件,在属性选项卡中选择“始终复制”以复制到输出路径。这样,构建时文件将被复制到输出目录,并且只需执行以下操作:

 XDocument xml = XDocument.Load("Registro.xml");

我更倾向于使用“仅复制较新文件”的方式。这样会更加简洁。 - Jurijs Kastanovs
@JurijsKastanovs,这不是“更干净”,而是不同的。有些情况下,如果您的应用程序修改了xml文件,您可能希望复制而不是更新(例如,您可以在调试中启动,在Visual Studio中进行一些更改,应用程序将更改文件,并且在下一次调试时,您的VS更改将被忽略,因为目标文件上的修改日期比解决方案中的日期要新)。这真的取决于他们的用例。 - Ronan Thibaudau

2

最好将XML文件添加为项目资源:转到项目属性,然后到资源选项卡。选择添加资源并添加您的文件。 然后,您就可以通过以下方式获取XDocument:

XDocument xml = XDocument.Parse(Properties.Resources.Registro);

如果你想保持原样,你可以考虑使用反射技术。

查看这里的答案:如何读取嵌入式资源文本文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接