![](/img/trans.png)
[英]Select specific node from XML document when there is two or more nodes with same name C#
[英]Finding a specific file path when two files have the same name in different locations in C#
我正在尝试在我的代码中加载并保存一个名为Modules.xml
的xml文件。 我目前已将文件路径进行了硬编码,如下所示。 我试图在我的代码中获取文件路径,而不对其进行硬编码。
我尝试使用Path.GetDirectoryName
和 new FileInfo("Modules.xml").Directory.FullName
。 但是,当我需要的文件位于主解决方案文件夹中时,这两个文件都将我的调试文件夹中的文件作为目标。
有没有一种方法可以将文件定位在我的主解决方案文件夹中,而不是我的调试文件夹中? (两个文件都称为Modules.xml)
doc.Save("C:\\Users\\Matthew\\Desktop\\Year4\\Object Oriented\\Project1\\Project1\\Modules.xml");
这两个文件位置如下所示:
C:\Users\Matthew\Desktop\Year4\Object Oriented\Project1\Project1\Modules.xml
^^^这是我的代码所需的文件路径^^^
C:\Users\Matthew\Desktop\Year4\Object Oriented\Project1\Project1\bin\Debug\Modules.xml
最好的方法是使用配置文件(例如app.config )来存储这样的字符串。 然后,您可以更改文件路径而无需重新编译代码,并且文件可以存储在应用程序可访问的任何位置。
如果您确实要按照说明的方式访问文件, AppDomain.CurrentDomain.BaseDirectory
将在运行时为您提供bin / Debug位置。 然后您可以从那里找到相对路径,例如:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\", fileName);
例如,其中fileName是“ Modules.xml”。
我尝试使用Path.GetDirectoryName和新的FileInfo(“ Modules.xml”)。Directory.FullName。 但是,当我需要的文件位于主解决方案文件夹中时,这两个文件都将我的调试文件夹中的文件作为目标。
这是因为bin\\Debug
是启动和运行项目时的工作目录。 要更改此设置,可以将working directory environment variable
为指向您的解决方案目录(而不是bin\\debug|release
),我不建议这样做。 因为当您最终完成开发并发布应用程序时,将没有任何解决方案目录可以保存您的XML文件。 我建议将XML文件复制到输出文件夹。 无论您是处于开发(调试)还是生产(发布)模式,XML始终都将被复制到最终目录。 您可以使用诸如AppDomain.CurrentDomain.BaseDirectory
类的内容访问工作目录。 要启用将XML复制到输出目录,请右键单击它,选择“属性”,将“ Build Action
设置为“ None
,然后将“ Copy to Output Directory
设置为Copy Always
或Copy if newer
。 您现在可以出发了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.