2014-10-19 106 views
0

因此,它基本上如標題中所述。我已經使用一些外部庫在Visual Studio 2013中創建了一個WPF應用程序。NET C#應用程序在開發PC上運行良好,但不能在生產計算機上運行

應用程序完美地運行在我的開發機器上(Windows 8.1 x64 + Visual Studio 2013),但在生產設備(帶有Windows 8(不是8.1)的平板電腦)上完全不運行。應用程序是在.NET 4.5下開發的,如果我嘗試運行調試或發佈版本,則無關緊要。該過程只是掛了一段時間,然後關閉沒有任何錯誤或消息。

如果有人知道該怎麼辦或如何解決這個問題,我會非常高興。

在此先感謝:)。

+0

這是一個商店應用程序或桌面應用程序? – 2014-10-19 19:32:02

+0

@MingSlogar WPF不適用於商店應用。 – 2014-10-19 19:35:08

+0

@BrianRasmussen我不確定OP是否知道這一點;許多商店應用程序開發人員認爲,因爲他們使用XAML進行編碼,所以它是WPF。如果實際上它是一個商店應用程序,則崩潰可能是由於使用8和8.1之間的不同庫引起的。 – 2014-10-19 19:39:34

回答

0

這是因爲你的外部庫沒有被編譯到最終的.exe文件中。所以你要麼需要將它們包含在同一個文件夾中,要麼將它們合併到exe中,但這個過程可能非常棘手。尋找ILMerge。然而,只需要將它們複製到exe文件中就簡單多了。

+0

這就是我已經完成的,並不是很不幸。 – drajvver 2014-10-19 18:48:30

+0

除.dll文件之外,如果目標設備上未安裝.NET Framework 4.5,則啓動後應用程序也會立即崩潰... – Filip 2014-10-19 19:13:21

1

最有可能在啓動時發生綁定錯誤,但您正在測試的生產計算機被配置爲以靜默方式報告這些錯誤,並且不顯示通知您該進程崩潰的典型對話框。

雖然不要擔心,但這個消息可能無法幫助你太多。

你需要做的是用一個可以生成依賴樹的工具檢查主可執行文件,並找出哪些DLL丟失。很可能這些將是本機二進制文件,不受管理。通常的嫌疑犯是VC運行時,或MFC或ATL庫,但也可能有其他人。這就是爲什麼您需要使用諸如DependencyWalkerRedGate's Reflector之類的工具來查找主可執行文件的所有依賴關係。

2

在這種情況下,第一件事情就是查看Windows事件日誌。當.NET應用程序崩潰時,.NET運行時會在那裏記錄事件。大多數情況下,這些事件會記錄導致崩潰的堆棧跟蹤。這會給你提示發生了什麼。

這樣的日誌可以在「應用程序」類別中找到,並且您需要查找的源名稱是「.NET運行時」。通常情況下,會有另一個條目的源名稱爲「應用程序錯誤」,但這個條目不太可能幫助您。

另一個有用的技術是在程序開始時添加一個Console.WriteLine調用,以查看該行是否可以運行。

根據您使用這些技術所找到的內容,您可能還想使用諸如Dependency WalkerILSpy之類的工具,正如Mike Dinescu所建議的那樣。

+0

是的,我使用了Dependency Walker,它顯示我缺少「ieshims.dll」,快速谷歌搜索後,我發現它用於VC++ 2005 redistributable,安裝它,但沒有效果。要查看事件日誌 – drajvver 2014-10-19 19:31:31

+0

好吧,我已檢查,這是我的錯誤:http://pastebin.com/58trXNKC 該應用程序正在使用本地SQL文件(.mdf),我有SQL本地安裝,但沒有用。 – drajvver 2014-10-19 21:13:53

+0

@drajvver你有一個XamlParseException。這個錯誤本身並沒有太大的幫助,因爲它表明在WPF初始化窗口的時候出現了問題。通常,這將表明在窗口的構造函數中發生了錯誤,但它偶爾也可能是由類型初始值設定項中的錯誤引起的。 – GoldenCrystal 2014-10-20 21:09:57

相關問題