从 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)