【问题标题】:XamlParseException in PresentationFramework.dll when calling FileHelperEngine constructor调用 FileHelperEngine 构造函数时 PresentationFramework.dll 中的 XamlParseException
【发布时间】:2013-08-05 14:54:06
【问题描述】:

类型的第一次机会异常 'System.Windows.Markup.XamlParseException' 发生在 PresentationFramework.dll
附加信息:'调用 'filehelpertest.MainWindow' 类型的构造函数匹配 指定的绑定约束引发了异常。行号“3”和 行位置'9'。

大家好,

我是 FileHelpers 的新手。

我在 VS Express 2013 中创建了一个最小的 WPF 项目来隔离这个问题。 该代码是从 FileHelpers 文档中的“分隔文件的快速入门”部分复制而来的。

我尝试引用 3 个不同版本的 FileHelpers.dll(2.0、1.1、Mono1.2),并尝试重新启动。但是我看不到任何效果。一定有一些非常简单的东西我错过了对吧?

或者 FileHelpers 不适用于较新版本的 .NET?

谢谢!

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using FileHelpers;

namespace filehelpertest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            FileHelperEngine engine = new FileHelperEngine(typeof(Customer));
            // To Read Use:
            Customer[] res = engine.ReadFile("f1.txt") as Customer[];
            // To Write Use:
            engine.WriteFile("f2.txt", res);
        }

        [DelimitedRecord(",")]  
        public class Customer
        {
            public int CustId;
            public string Name;
        }
    }
}

【问题讨论】:

  • 我希望异常中有更多信息 - 一个内部异常表明 MainWindow 构造函数中出了什么问题。你应该看看那个。
  • 谢谢,我同意,但我不知道在哪里/如何查看更多信息...这是截图:i.imgur.com/s7LUOzV.png
  • 所以你选择了“Break”选项,你应该得到更多的信息.​​.....
  • 选择“Break”后,我进入一个页面,显示无法加载 PDB 文件。然后我通过选择符号服务器搞砸了一些事情。现在,当我选择“中断”时,我看到“源不可用”...我找不到撤消符号服务器的方法...(谢谢顺便说一句)
  • 这听起来很奇怪。如果您允许它继续,您是否会获得完整的堆栈跟踪somewhere? (例如在输出窗口中?)

标签: c# wpf filehelpers visual-studio-2013


【解决方案1】:

我的问题的解决方案与XAML Parse Exception - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"接受的答案相同

我做了 CTRL-ALT-E 然后检查了一切。现在弹出窗口显示实际异常而不是 xamlparseexception。

【讨论】:

  • 谢谢你,你也帮我找到了我案件的根本原因。
  • 我也必须重建解决方案。
【解决方案2】:

我认为问题出在路径上,提供引擎的完整路径并像这样使用通用版本:

   public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            try
            {
              var engine = new FileHelperEngine<Customer>();
              // To Read Use:
              Customer[] res = engine.ReadFile(@"c:\yourpath\f1.txt");
              // To Write Use:
              engine.WriteFile(@"c:\yourpath\f2.txt", res);
            }
            catch(Exception ex)
            {
              MessageBox.Show(ex.Message);
            }
        }
    }

【讨论】:

  • 谢谢,我上面代码中的实际错误是文本文件的第一行有字段名称,因此无法解析为整数(custID)。我将文本文件与 exe 一起放在 Debug 文件夹中,所以纯文件名可以正常工作。 Jon Skeet 帮助我发现如果我选择“继续”,实际的异常会显示在输出窗口中。但是,我想问一下隐藏在 xamlparseexception 后面的错误是否是在 VisualStudio 中使用 FileHelpers 的一个已知问题。我能做些什么来让异常以正常方式显示出来吗?
猜你喜欢
  • 2013-06-10
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
  • 2021-11-23
相关资源
最近更新 更多