2013-08-01 6 views
4

Первый шанс исключение типа «System.Windows.Markup.XamlParseException» имели место в PresentationFramework.dll
Дополнительная информация: «Заклятие Конструктор по типу 'filehelpertest.MainWindow', который соответствует указанным ограничениям привязки , вызвал исключение. ' Номер строки «3» и позиция линии «9».XamlParseException в PresentationFramework.dll при вызове FileHelperEngine конструктору

Привет всем,

Я новичок в FileHelpers.

Я сделал минимальный проект WPF в VS Express 2013, чтобы изолировать эту проблему. Код скопирован из раздела «Быстрый старт для разделенных файлов» в документах 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; 
     } 
    } 
} 
+0

Я ожидаю, что в исключении будет больше информации - внутреннее исключение, указывающее, что пошло не так в конструкторе MainWindow. Вы должны посмотреть на это. –

+0

Спасибо, я согласен, но я не знаю, где/как увидеть дополнительную информацию ... Вот скриншот: http://i.imgur.com/s7LUOzV.png – gus

+1

Итак, вы выбираете опцию «Перерыв» и вы должны получить дополнительную информацию ... –

ответ

14

Решение моей проблемы является таким же, как принято отвечать на XAML Parse Exception - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Я сделал CTRL-ALT-E, а затем проверил все. Теперь всплывающее окно показывает фактическое исключение, а не xamlparseexception.

+1

Спасибо, вы поможете мне найти основную причину и в моем случае. –

+0

Мне также пришлось перестроить решение. – JoanComasFdz

1

Я думаю, что проблема с путем, обеспечивает полный путь к двигателю и использовать общий Verion так:

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); 
      } 
     } 
    } 
+0

Спасибо, фактическая ошибка в моем предыдущем коде заключалась в том, что текстовый файл имел имена полей в качестве первой строки и поэтому не мог быть проанализирован как integer (custID). Я поместил текстовый файл в папку Debug вместе с exe, поэтому обычное имя файла работало нормально. Джон Скит помог мне найти, что фактическое исключение отображается в окне «Вывод», если я выберу «Продолжить». Однако я хотел бы спросить, является ли ошибка скрытой за xamlparseexception известной проблемой при использовании FileHelpers с VisualStudio. И есть ли что-нибудь, что я могу сделать, чтобы получить исключения, чтобы показать нормальный путь, которым они должны? – gus

+0

@MarcosMeli Настройка исключения была хорошей идеей. –