2011-01-06 82 views
21

我一直在嘗試部署我的WPF應用程序,我使用安裝嚮導創建了一個安裝項目。我添加的唯一項目輸出是Primary。建立這個和安裝程序後,只要我點擊我的桌面上的EXE我彈出一個說'我的程序'已停止工作「,所以我點擊調試程序,我看到部署WPF項目後的XamlParseException

PresentationFramework.dll中發生未處理的異常類型'System.Windows.Markup.XamlParseException'

附加信息:'Set connectionId thrrew an exception。'行號「10」和行位置「9」。

這個例外並沒有指出我要解決什麼問題。在我的應用程序中沒有任何'connectionId'。

我之前遇到了XAMLParseException,因爲我的系統托盤中有NotifyIcon,但是通過將圖標添加到我的exe文件的路徑中來解決了這個問題。我認爲這可能是問題所以我添加圖標到我的安裝項目,以及所有其他項目輸出。還是行不通。

我知道這是一個模糊的錯誤,但任何幫助都將不勝感激,我的應用程序將不會運行。謝謝!

回答

30

這通常是由於沒有將所有依賴項複製到輸出中造成的。正如你所說的那樣,這個錯誤信息不是很有幫助,但我會檢查你的應用程序是否有可用的所有必要的依賴來解析解析的類型。

正常情況下,將引用程序集的Copy Local設置爲true就足夠了,但我經歷過一些引用本身引用程序集的情況,因此也可能需要顯式添加這些引用。

更新:

重要的除了通過@ BENN1TH。

如果你想看到的組裝需要什麼:

居然也得到了相同類型的問題我曾經發表過,並安裝在我的項目(在調試VS2013桌面工作正常,沒有錯誤等)但使用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 2011-01-06 14:29:20

+0

哦,它現在正在工作。我需要參考資料,並確保我的圖標位於應用程序的文件夾中。我認爲我的問題的一部分是我將圖標與項目輸出一起添加到構建中。我需要構建,安裝,然後在事實之後添加圖標。無論如何,非常感謝幫助 – Drew 2011-01-06 14:32:58

+6

當我得到這個異常時,我能夠進入調試器,並查看InnerException以查看哪個DLL丟失。 – 2012-02-07 22:14:04

9

清洗和重建解決方案可能會有所幫助!

+0

重建爲我工作,沒有這個答案,我可能沒有想到它,所以謝謝 – Matt 2012-04-12 15:38:52

3

我在VS2010中遇到了WPF解決方案的問題。該解決方案包含一個簡單的dll和一個用於測試dll的測試項目(設置爲啓動)。我的dll設置爲x86,我的測試項目設置爲x64。當我將測試項目更改爲x86時,問題已解決。

2

如果在調試器中發現此異常,請檢查異常的InnerException成員。它可能會給你一個關於哪個程序集丟失的提示。

1

我剛剛花了4個小時試圖弄清楚這一點。我最終與xaml無關!原來,這是MainWindow初始化後面的代碼中的一個小錯誤。

如果一切都失敗,請檢查那裏

0

清理和重建項目對我無效。

你可以嘗試刪除bin目錄然後重建,我通過這種方式解決了我的問題。

0

我有這個問題。由於Microsoft.Expression.Drawing.dll發生此問題請下載DLL並添加引用。

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

與應用程序內運行多個DLL工作時,我遇到了這一點,這些dll有不同的加載相同的依賴版本。

我們通常在我們的發佈版本中合併dll以防止此問題,但是如果我們在開發週期中測試多個未合併的dll,則會看到它。

它的溶液只測試一組未合併的DLL的,使用用於不被測試,或以確保依賴DLL是相同的版本爲兩組的其他DLL合併發佈版本。