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

时间:2010-08-19 11:49:43

标签: c# .net asp.net xml visual-studio-2008

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

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

我也尝试过:

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

但它似乎在查看当前目录(即我的VS2008目录)而不是项目。我错了吗?有没有办法简单地引用项目中嵌入的资源?

2 个答案:

答案 0 :(得分:0)

当第二次尝试中的波形符'〜'在控件属性(如HyperLink.NavigateUrl)中设置的文件URL的一部分时,会对其进行评估。如果它只是传递给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);
            }
        }

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

答案 1 :(得分:0)

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

你可以尝试

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

将这些文件保存在 App_Data 文件夹

中会更好