2010-07-01 43 views
0

我們正面臨一個奇怪的問題。我們有一個用WPF編寫的用戶控件,我們在xaml文件中添加了一個單擊事件處理程序。在本地系統上,它按預期工作。但是當構建在服務器(我們有代碼庫)生成時,我們注意到生成的構建有一個錯誤。這個錯誤是每次爲此控件生成兩次click事件。我們在事件處理函數中使用OpenFileDialog來瀏覽圖像。 我們注意到通過VS構建的本地系統使用CSC.exe進行構建,而在服務器上使用MSBuild.exe。所以我們也嘗試在本地系統上使用MSBuild進行構建。但是錯誤不會在本地系統上重現。使用VS構建服務器系統上的代碼也不會重現該錯誤。因此,重新生成該錯誤的唯一方法是在服務器上生成自動構建。 我們嘗試過比較兩個dll(越野車和非越野車)的IL代碼。我們檢查了事件處理函數的IL代碼。 IL代碼是相同的。在特定的構建環境下觸發兩次WPF點擊事件

我不懷疑我們的代碼,因爲在任何情況下該錯誤都不會在我們的本地系統上重現。請讓我知道你是否需要更多的輸入/細節。

任何幫助將不勝感激。

感謝, 米沙勒

+0

您可以指定自動構建工具如何調用click事件嗎?它是一種可能存在錯誤的UI測試工具嗎? – 2010-07-01 05:38:10

+0

@John:沒有UI測試工具。一旦自動構建成功,我們將構建通過局域網拉到本地系統,然後運行應用程序。 – mishal153 2010-07-01 06:30:32

回答

0

順便說一下,這是'固定'(解決方法)很容易。如果按鈕的Click事件處理程序是從代碼而不是從XAML添加的,則Bug將消失:| 我相信這可能是XAML加載器中的一些MS錯誤。我不確定是否有其他人也參與了這項工作,但我們在兩個以上的地方積極面對這個錯誤。一個缺失的鏈接是在什麼情況下出現該錯誤。直到現在,我們已經看到這隻在按鈕的情況下。不知道它出現在哪裏

1

(VS使用的MSBuild。)

在VS,設置

工具\選項\項目和解決方案\生成和運行\ MSBuild項目輸出詳細

「診斷」,然後清理項目,構建它,並從輸出窗口捕獲日誌。

與服務器上運行的「msbuild.exe/v:diag ...」的輸出進行比較。

希望能找到差距的根源。

+0

我正在嘗試這個。我所做的是通過VS在本地系統上構建類庫,並保存日誌。然後在服務器上,我使用VS清理了相同的dll。然後,我使用MSBuild/v:diag在服務器上構建了dll ...然後我保存了日誌。然後我試圖從服務器拉到本地系統和嘗試repro。該錯誤沒有*重放。所以,當我們使用MSBuild構建整個解決方案時,似乎只會重現該錯誤。構建整個解決方案的日誌將會過於龐大,因爲這個dll的日誌很大:(並且與我們的本地構建日誌相比有很多差異:( – mishal153 2010-07-01 06:35:04