从 C# 中的非 Web 项目读取 xml 文件 (Visual Studio)
Read an xml file from non-web project in C# (Visual Studio)
我正在尝试读取一个 xml 文件,该文件存在于我的 VS 解决方案的一个项目中。这是我的代码。
string path = HttpContext.Current.Server.MapPath(@"~\Resources\XmlDocument.xml");
XDocument document = XDocument.Load(path);
如果我的 xml 文件在 web 项目中,这就可以正常工作。但实际上我的 xml 文件在同一解决方案下的不同项目中。
我无法使用 Server.MapPath
,因为这会搜索 Web 项目。我搜索了答案,但没有找到适合我的解决方案。
如何访问此 xml 文件?我正在尝试从同一项目中的辅助方法访问它。
试试这个:
string path = HostingEnvironment.ApplicationPhysicalPath + (some path);
public void LoadXML()
{
if (System.IO.File.Exists(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<int>));
lock (new object())
{
using (TextReader reader = new StreamReader(path))
{
return (List<int>)(serializer.Deserialize(reader));
}
}
}
}
这对我有用。
获得当前目录后,为什么不向上导航多个父目录然后找到您的文件?
DirectoryInfo info = new DirectoryInfo(Environment.CurrentDirectory);
DirectoryInfo parent = info.Parent.Parent;
string file = Path.Combine(parent.FullName, @"your\path");
这里我使用 Environment.CurrentDirectory
来获取程序现在的位置,但是您可以根据需要堆叠任意数量的 Parent
元素。然后你可以结合路径在其他项目中找到你的文件。
编辑:
一旦您的应用程序 运行 所有环境变量和 Server.MapPath
将为您提供它正在执行的位置(即您现在获得的路径)。鉴于此,创建一个文件夹并通过它的完整路径引用它可能会更容易。 (C:\Data\myfile.xml)
我正在尝试读取一个 xml 文件,该文件存在于我的 VS 解决方案的一个项目中。这是我的代码。
string path = HttpContext.Current.Server.MapPath(@"~\Resources\XmlDocument.xml");
XDocument document = XDocument.Load(path);
如果我的 xml 文件在 web 项目中,这就可以正常工作。但实际上我的 xml 文件在同一解决方案下的不同项目中。
我无法使用 Server.MapPath
,因为这会搜索 Web 项目。我搜索了答案,但没有找到适合我的解决方案。
如何访问此 xml 文件?我正在尝试从同一项目中的辅助方法访问它。
试试这个:
string path = HostingEnvironment.ApplicationPhysicalPath + (some path);
public void LoadXML()
{
if (System.IO.File.Exists(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<int>));
lock (new object())
{
using (TextReader reader = new StreamReader(path))
{
return (List<int>)(serializer.Deserialize(reader));
}
}
}
}
这对我有用。
获得当前目录后,为什么不向上导航多个父目录然后找到您的文件?
DirectoryInfo info = new DirectoryInfo(Environment.CurrentDirectory);
DirectoryInfo parent = info.Parent.Parent;
string file = Path.Combine(parent.FullName, @"your\path");
这里我使用 Environment.CurrentDirectory
来获取程序现在的位置,但是您可以根据需要堆叠任意数量的 Parent
元素。然后你可以结合路径在其他项目中找到你的文件。
编辑:
一旦您的应用程序 运行 所有环境变量和 Server.MapPath
将为您提供它正在执行的位置(即您现在获得的路径)。鉴于此,创建一个文件夹并通过它的完整路径引用它可能会更容易。 (C:\Data\myfile.xml)