我正在尝试在代码中加载并保存一个名为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
答案 0 :(得分:0)
这里最好的方法是使用配置文件,例如 app.config ,用于存储这样的字符串。然后,您可以更改文件路径而无需重新编译代码,并且文件可以存储在应用程序可访问的任何位置。
如果您确实要按照说明的方式访问文件,AppDomain.CurrentDomain.BaseDirectory
将在运行时为您提供 bin / Debug 位置。然后您可以从那里找到相对路径,例如:
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\", fileName);
例如,其中fileName是“ Modules.xml”。
答案 1 :(得分:0)
我尝试使用Path.GetDirectoryName和new 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
。您现在可以出发了。