一种可能性是使用embed the XML file into the assembly
类库,然后将其作为 Web 应用程序中的资源读取。请记住,当您将 Web 应用程序发布到 Web 服务器时,包中的所有内容都将是该 Web 应用程序的文件。与此 Web 应用程序所属的 Visual Studio 解决方案中可能存在的某些项目没有物理关系。
您可以查看GetManifestResourceStream
允许您从引用的程序集中读取嵌入式 XML 的方法。
这是一个例子:
// you could use any type from the assembly here
var assembly = typeof(TaskManagerHelper).Assembly;
using (var stream = assembly.GetManifestResourceStream("TaskManager.Data.DataBase.TasksDataBase.xml"))
using (var xmlReader = XmlReader.Create(stream))
{
// ... do something with the XML here
}
请记住,由于文件嵌入到程序集中,您将无法修改它。它是只读的。如果您需要修改它,那么另一种方法是将这个文件复制到您的 Web 应用程序中。例如一个好地方是App_Data
特殊文件夹。您甚至可以设置一个后编译步骤,将 XML 文件复制到此位置。
然后你可以很容易地引用它:
string xmlFile = HostingEnvironment.MapPath("~/App_Data/TasksDataBase.xml");
using (var xmlReader = XmlReader.Create(xmlFile))
{
// ... do something with the XML here
}
在这种情况下,由于 XML 文件现在物理上是 Web 应用程序的一部分并且位于硬盘驱动器上,因此您也可以对其进行修改。