代码之家  ›  专栏  ›  技术社区  ›  Paul Michaels

在VS2008 ASP.NET项目中使用嵌入文件

  •  3
  • Paul Michaels  · 技术社区  · 14 年前

    我有一个ASP.NET项目,希望在项目中包含一个XML文件来存储一些相对静态的数据。为此,我从解决方案上下文菜单中选择了“添加文件”,并选择了我的XML文件。将这个添加到我的项目中之后,我想从代码中加载XML。我尝试了以下方法:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load("MyData.xml");
    

    我也尝试过:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load("~/MyData.xml");
    

    但它似乎是在当前目录(即我的VS2008目录)中查找,而不是在项目中查找。我是不是做错了?有没有一种方法可以简单地引用这样嵌入到项目中的资源?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Daniel Dyson    14 年前

    当tilde“~”是控件属性(如hyperlink.navigateurl)中设置的文件URL的一部分时,将对第二次尝试中的tilde“~”进行评估。如果它只是传递给xmldocument.load()的字符串的一部分,则必须使用 Server.MapPath("~/MyData.xml")

    或者,

    您可以将该文件作为嵌入资源包含进来。右键单击解决方案中的文件,然后在“生成”操作中选择“嵌入资源”。在“复制到输出目录”选项中,选择“不复制”

    以下是如何读取文件的示例:

            var assembly = Assembly.GetExecutingAssembly();
            if (assembly != null)
            {
                var stream = assembly.GetManifestResourceStream("RootProjectNamespace.MyData.xml");
                if (stream != null)
                {
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(stream);
                }
            }
    

    注意,必须在文件名前面加上项目的默认名称空间。您可以通过右键单击项目,选择“属性”,然后在“应用程序”选项卡中,默认名称空间位于顶部来找到它。

        2
  •  0
  •   ajay_whiz    14 年前

    您在ASP.NET项目中添加XML文件所遵循的步骤不会像在应用程序中嵌入.aspx页面那样嵌入到应用程序中。

    你可以试试

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(Server.MapPath("~/MyData.xml"));
    

    而且最好把这些文件保存在 附加数据 文件夹