2011-01-06 4 views
21

WPF 응용 프로그램을 배포하려고 시도했지만 설치 마법사를 사용하여 설치 프로젝트를 만들었습니다. 추가 한 프로젝트 출력은 기본 버전이었습니다. 이걸 빌드하고 프로그램을 설치하자 마자 바탕 화면의 exe를 클릭하자마자 "내 프로그램이 작동을 멈췄다"라는 팝업이 뜨고, 그래서 Debug and the Program을 클릭하십시오.WPF 프로젝트를 배포 한 후 XamlParseException

'System.Windows.Markup.XamlParseException'형식의 처리되지 않은 예외가 PresentationFramework.dll에서 발생했습니다.

추가 정보 : 'connectionId 예외가 발생했습니다.' 줄 번호 '10'과 줄 위치 '9'.

이 예외가 무엇을 수정해야하는지에 대해서는 어떤 방향으로도 지적하지 않습니다. 내 앱에는 아무데도 'connectionId'가 없습니다.

시스템 트레이 용 NotifyIcon 때문에 이전에 XAMLParseException이 발생했지만 내 exe 경로에 아이콘을 추가하여 수정되었습니다. 나는 이것이 다른 프로젝트 출력과 함께 설치 프로젝트에 아이콘을 추가 했으므로 이것이 문제가 될 수 있다고 생각했습니다. 그래도 작동이 안되는.

나는 이것이 모호한 오류라는 것을 알고 있지만 도움이된다면 내 앱이 전혀 실행되지 않을 것입니다. 감사!

답변

30

일반적으로 모든 종속성을 출력에 복사하지 않아서 발생합니다. 오류 메시지는별로 도움이되지 않지만 응용 프로그램이 구문 분석 된 유형을 해결하는 데 필요한 모든 종속성을 갖고 있는지 확인합니다.

일반적으로 참조 된 어셈블리에 대해 로컬 복사를 true로 설정하면 충분하지만 참조 자체가 어셈블리를 참조하는 경우가 있으므로 이러한 참조를 명시 적으로 추가해야 할 수도 있습니다.

업데이트 : @ BENN1TH에 의해

중요 또한.

당신은 조립이 필요한 것을보고 싶다면 : 내가 게시 된 내 프로젝트를 설치 한 후 문제의 동일한 유형을 얻고 있었다

(디버그 VS2013 데스크탑에서 잘 작동했다, 등 오류없이) 그러나 http://geekswithblogs.net/lbugnion/archive/2007/03/14/108728.aspx와 wham에서 충고를 사용했습니다! 설치된 프로젝트가 작동 중이었습니다.

+0

나는 내 어셈블리에서 참조한 모든 DLL을 포함 시켰습니다. 내가 필요한 다른 것들을 어떻게 말할 수 있습니까? – Drew

+0

오 이제 작동 중입니다. 참조가 필요하고 또한 응용 프로그램의 폴더에 내 아이콘이 있는지 확인해야했습니다. 내 문제의 일부는 프로젝트 출력과 함께 빌드에 아이콘을 추가 한 것입니다. 나는 사실을 만든 후에 아이콘을 만들고 설치하고 추가해야했습니다. 어쨌든, 도와 주셔서 고맙습니다. – Drew

+6

이 예외가 생기면 디버거에 들어가 InnerException을보고 DLL이 누락 된 것을 확인할 수있었습니다. –

9

솔루션을 청소하고 다시 작성하면 도움이 될 수 있습니다!

+0

재건 작업이 저에게 효과적이었습니다.이 대답이 없으면 감사하지 않았을 수도 있습니다. 덕분에 – Matt

+0

나는 혼합에서 애니메이션 트리거를 추가 한 후에 같은 문제가있었습니다. bin 및 obj를 삭제 한 다음 다시 작성하여 문제를 해결했습니다. –

3

VS2010의 WPF 솔루션에서이 문제가 발생했습니다. 이 솔루션에는 dll을 테스트하기위한 간단한 dll과 테스트 프로젝트 (시작으로 설정)가 포함되어 있습니다. 내 DLL은 x86으로 설정되었고 테스트 프로젝트는 x64로 설정되었습니다. 테스트 프로젝트를 x86으로 변경했을 때 문제가 해결되었습니다.

2

디버거에서이 예외가 발생하면 예외의 InnerException 멤버를 확인하십시오. 누락 된 어셈블리에 대한 힌트를 줄 수 있습니다.

1

나는 이것을 알아 내려고 4 시간 만했습니다. 내 것은 xaml과 아무 상관이 없어졌습니다! MainWindow 초기화에 대한 코드의 사소한 오류가 있음이 드러났습니다.다른 모든 실패하면

,이

0

청소 확인하고 프로젝트를 재건하는 것은 나에게 효과가 없었다.

bin 디렉토리를 삭제 한 다음 다시 작성하면이 문제가 해결됩니다.

0

이 문제가 있습니다. 이 문제는 Microsoft.Expression.Drawing.dll로 인해 dll을 다운로드하고 참조를 추가하십시오.

+0

@ HansZ, 어쩌면 그는 질문에 답하려고 노력하고 있지만 어리석은 방식으로 시도하고있을 것입니다. – rpax

+0

@Hans Z, 이것은 DLL 문제가 Microsoft의 일반적인 오류이기 때문에 대답 일 수 있습니다. – SmallChess

+0

동의, 댓글을 제거 –

2

내 프로젝트를 게시하고 설치 한 후에는 동일한 유형의 문제가 발생했으나 (VS2013 데스크톱 디버깅, 오류 등은 제대로 처리되지 않음) 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을 병합합니다.하지만 개발 사이클 중에 하나 이상의 unmerged dll 집합을 테스트하는 경우이 DLL이 표시됩니다.

솔루션은 한 세트의 병합되지 않은 DLL 만 테스트하고 테스트되지 않은 다른 dll에는 병합 된 릴리스 버전을 사용하거나 종속 dll이 두 세트 모두에 대해 동일한 버전인지 확인합니다.

관련 문제