【问题标题】:Read xml files from assembly从程序集中读取 xml 文件
【发布时间】:2012-10-17 14:32:57
【问题描述】:

我正在尝试从程序集中读取 xml 文件,这是我的代码:

private Assembly testAssembly;
    private void button1_Click(object sender, EventArgs e)
    {
        string testfile = "stack.xml";
        String testfileName = string.Format("{0}.{1}", testAssembly.GetName().Name, testfile);

        using (Stream stream = testAssembly.GetManifestResourceStream(testfileName))
        {
            using (StreamReader sr = new StreamReader(stream))
            {
                var value = sr.ReadToEnd();
                Console.WriteLine("The read file is {0}", value);
            }
        }
    }

我在这一行遇到了问题:

String testfileName = string.Format("{0}.{1}", testAssembly.GetName().Name, 
                                     testfile); 

空引用异常未处理,它说空。有什么帮助???

【问题讨论】:

  • 如何获取传递给Form1的程序集引用?
  • 你检查你testAssembly是否为空??
  • 我已经更新了我的问题,testAssembly 不为空,我可以看到 xml 文件名。我的 xml 文件在同一个项目中并且是嵌入的。
  • @linguini - 根据您发布的屏幕截图中的 NullReferenceException,我认为 testAssembly 是 null
  • 在完全相同的情况下显示屏幕,但将鼠标悬停在testAssembly

标签: c# xml winforms .net-assembly


【解决方案1】:

看起来marksAssemblynull

【讨论】:

  • @linguini - 确保不是null
  • @Ramhound:我该怎么做??
  • 抛出异常时,将鼠标放在testAssembly 上,它应该会显示一个小工具提示,您可以在其中阅读testAssebmly 是否为null
  • 是的,它说 testAssembly 为空。我该怎么办??
  • @Quick Joe Smith:我应该分配什么,文件名还是什么??
【解决方案2】:
string resName = "resources/HistoryConnections.xml";  

private static UnmanagedMemoryStream GetResourceStream(string resName)
        {
            var assembly = Assembly.GetExecutingAssembly();
            var strResources = assembly.GetName().Name + ".g.resources";
            var rStream = assembly.GetManifestResourceStream(strResources);
            var resourceReader = new ResourceReader(rStream);
            var items = resourceReader.OfType<DictionaryEntry>();
            var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value;
            return (UnmanagedMemoryStream)stream;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多