2011-01-06 3 views
21

Я пытаюсь развернуть мое приложение WPF, я создал проект установки с помощью Мастера установки. Единственный выход проекта, который я добавил, был Первичный. После создания этого и установки программы, как только я нажму exe на своем рабочем столе, я получу всплывающее сообщение, в котором говорится: «Моя программа» перестала работать », поэтому я нажимаю« Отладка программы », и я вижуXamlParseException после развертывания проекта WPF

Необработанное исключение типа «System.Windows.Markup.XamlParseException» произошло в PresentationFramework.dll

Дополнительная информация: «Set connectionId выбрал исключение». Номер линии «10» и позиция линии «9».

Это исключение не указывает мне ни в каком направлении относительно того, что исправить. в моем приложении нет «connectionId».

Я ранее сталкивался с XAMLParseException из-за моего NotifyIcon для моего системного лотка, но это было исправлено добавлением значка к пути моего exe. Я подумал, что это может быть проблемой, поэтому я добавил значок в свой проект установки вместе со всеми другими выходами проекта. Все еще не работает.

Я знаю, что это неопределенная ошибка, но любая помощь вообще будет оценена, мое приложение не будет работать вообще. Благодаря!

ответ

30

Это обычно вызвано тем, что не все зависимости скопированы на выход. Как вы говорите, сообщение об ошибке не очень полезно, но я бы проверял, что ваше приложение имеет все необходимые зависимости, доступные для разрешения разобранных типов.

Обычно достаточно установить Копировать локальное значение в значение true для ссылочных сборок, но я испытал некоторые случаи, когда ссылки сами ссылаются на сборки, поэтому может быть необходимо также явно добавить эти ссылки.

Update:

Важное дополнение по @ BENN1TH.

Если вы хотите увидеть, что сборка необходимо:

получал один и тот же тип вопроса, как только я опубликовал и установил мой проект (работает нормально в отладочной VS2013 Desktop, без ошибок и т.д.) но использовал совет от http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx и wham! установленный проект работал.

try 

{ 
    InitializeComponent(); 
} 
catch (Exception ex) 
{ 
    // Log error (including InnerExceptions!) 
    // Handle exception 
} 
+0

Я удостоверился, что включил все DLL, на которые я ссылался в своей сборке. как я могу рассказать, какие другие мне могут понадобиться? – Drew

+0

ohh сейчас работает. Мне нужны ссылки, а также чтобы убедиться, что мой значок находится в папке приложения. Я думаю, что частью моей проблемы я добавил значок в сборку вместе с результатами проекта. мне нужно было построить, установить, а затем добавить значок после факта. в любом случае, большое спасибо за помощь. – Drew

+6

Когда я получил это исключение, я смог войти в отладчик и посмотреть на InnerException, чтобы увидеть, какая DLL отсутствовала. –

9

Уборка и восстановление решения могут помочь!

+0

Rebuilding работал для меня, и без этого ответа я, возможно, и не подумал об этом, поэтому спасибо – Matt

+0

У меня была такая же проблема после добавления триггера анимации из blend. удалив bin и obj, затем восстановите, решите проблему. –

3

У меня была эта проблема с решением WPF в VS2010. Решение содержало простую dll и тестовый проект (установленный для запуска) для тестирования dll. Моя dll была установлена ​​в x86, и мой тестовый проект был установлен на x64. Когда я изменил тестовый проект на x86, проблема была решена.

2

Если вы получили это исключение в отладчике, проверьте член InnerException для исключения. Это может дать вам подсказку о том, какая сборка отсутствует.

1

У меня всего 4 часа, чтобы понять это. Шахта не имела ничего общего с xaml! Оказалось, что это была небольшая ошибка в коде по умолчанию для инициализации MainWindow.

Если все остальное терпит неудачу, проверьте там

0

очистки и восстановления проект не был эффективным для меня.

Вы можете попытаться удалить каталог bin, а затем перестроить, я решил проблему таким образом.

0

У меня есть эта проблема. Эта проблема возникает из-за Microsoft.Expression.Drawing.dll, пожалуйста, загрузите dll и добавьте ссылку.

+0

@ Ханс, может быть, он пытается ответить на вопрос, но загадочно. – rpax

+0

@Hans Z, это может быть ответ, потому что проблема с DLL является распространенной ошибкой для Microsoft. – SmallChess

+0

согласился, удалил комментарий –

2

Получил тот же тип проблемы, как только я опубликовал и установил свой проект (отлично работал в отладке VS2013 Desktop, без ошибок и т. Д.), Но использовал совет от http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx и wham! установлен проект работал ..

try 

{ 
    InitializeComponent(); 
} 
catch (Exception ex) 
{ 
    // Log error (including InnerExceptions!) 
    // Handle exception 
} 
+0

мужчина, вы потрясающий! Ты спасешь мой день! :) – StepUp

0

Я столкнулся с этим при работе с несколькими библиотеками DLL, работающих внутри приложения, и эти библиотеки DLL имеют различные версии одного и те же зависимости загруженных.

Обычно мы сбрасываем DLL во время нашей сборки релиза, чтобы предотвратить эту проблему, но мы видим, что мы тестируем более одного набора несвязанных DLL во время цикла разработки.

Решение для тестирования только одного набора несвязанных DLL с использованием версий с объединенным выпуском для других DLL, которые не тестируются, или для обеспечения того, чтобы зависимая dll была одинаковой для обоих наборов.