2010-04-21 68 views
0

我們正在開發使用Visual C#2008 Express在Windows XP計算機(32位)下基於WPF的程序。如何檢查代碼是否與Windows 7兼容

的事情是,我們試圖在兩個Windows 7計算機上運行程序,一個是32位的Windows 7和另一個是64位的Windows 7

在Windows XP中,一切都很好。在Windows 7機器上,它啓動32位版本,雖然在運行一個功能時發生錯誤(它在XP中不會發生)。

在W7 64位它甚至不會啓動。這是正常的嗎?即使執行速度較慢,也無法在W7 64位下運行32位程序?

我們如何檢查代碼是否與Windows 7兼容?

非常感謝您提前。

Julen。

回答

1

我認爲這不是一個兼容性的問題。 Windows 7,32位和64位應該完全兼容C#WPF應用程序。它不會在64位操作系統上運行明顯慢。你不應該注意到任何退化。

如果你的應用程序在Win7上崩潰檢查你的代碼,檢查它拋出的異常..我幾乎相信罪魁禍首是在那裏。

+0

事情是我們現在承受不起一個新的W7許可證來調試代碼。無論如何,我們正在用消息進行一些測試,它看起來像一個數據庫問題。我們的應用程序很小,使用Access數據庫。我們已經包含了JET Access「插件」,因此我們可以連接到數據庫角色,如果目標計算機具有Access或不。我們是否應該包含W7特定的JET訪問?我們很苦惱與Access,但它是使用「強制」。謝謝! – Julen 2010-04-21 11:28:13

+0

啊哈! Ms Access :)查看我發佈在頂部的新答案 – 2010-04-21 11:56:37

0

當我在Win XP 32位下開發了一個我的愛好項目並嘗試在64位Vista上運行它時,我有同樣的iseeu。即使目標CPU被設置爲「任何CPU」,該應用程序甚至沒有啓動並且有時開始拋出錯誤。

現在我用Win 7機器(64)位進行開發,並將目標CPU設置爲「任何CPU」。它在Vista和XP(32位和64位)中運行時沒有任何問題。

你也可以只用「32位」模式。你的應用程序不會有任何性能問題。

我建議你在Windows 7電腦上打開應用程序,然後調試或重新編譯並在Vista和xp等較低版本中進行測試。

+0

謝謝!請參閱上面的答案。 – Julen 2010-04-21 11:28:33

2

我同意Artiom並只看到一個有效的答案:在Windows 7上測試它。 我們可以寫下來這裏可能出現的問題的列表(我會在第二個做的),但你仍然需要

  • 對相關架構
  • 測試軟件檢查錯誤信息/條件自己

可能發生的變化,XP和Windows 7之間:

用戶訪問控制(UAC): 這意味着你的程序不使用管理權限運行,除非你

  • 明確啓動它就像是在Vista/Windows7的支持

這也意味着你的應用程序不能寫入某些文件夾在一個特定的清單資源是

  • 需要管理權限(UAC試圖通過「虛擬文件夾重定向」「幫助」你:如果你寫入%ProgramFiles%,它將靜默寫入你的用戶配置文件並「成功」。如果其他用戶希望在%ProgramFiles%directoy中看到您的更改(儘管它不會在那裏)),甚至不會出現錯誤。

    關於您的具體報告和問題:

    1)提供有關該功能的更多詳細信息。也許它取決於Windows7上不存在的DLL(但在每臺XP機器上)。也許它只是與權限有關(見上文)。更多詳情 - >更多幫助。

    2)同樣地,更多的細節。可能的候選人:您的應用程序以64位應用程序運行,儘管它通過P/Invoke在32位本機DLL上具有硬/早期依賴性。同樣,你提供的信息不夠。

  • +0

    謝謝大家!我們已將代碼移至基於W7的計算機並調試代碼。正如你所提到的,當嘗試更新數據庫中的值時,恰好是權限問題。我們試圖在代碼中以編程方式更改文件的權限,但我們無法或不知道如何去做。你是否可以做?該數據庫文件順便在Program Files文件夾下。 – Julen 2010-04-22 10:17:28

    +0

    好吧,改變這一點。您不應該寫入Program Files文件夾。如果它是用戶特定的內容,請寫入他們的配置文件。如果它對整個機器有價值,請使用ProgramData目錄。查看此博客文章:http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx – 2010-04-22 11:39:59

    4

    好,爲用戶提供一些更多的信息,相信匪徒已被發現。 客戶端在其應用程序中使用MS Access數據庫(標準MS Jet提供程序)。問題是,微軟並沒有MS噴氣供應商的64位版本,並將不會做到這一點。不知道爲什麼:)

    因此,要使應用程序在Windows 7 64位上運行,請執行以下操作:在Visual Studio中轉到項目屬性,然後在Build選項卡中,Platform目標將Any CPU更改爲x86。這將迫使應用程序以32位唯一模式編譯(將在Win7 64下的WOW64下運行),並且該應用程序將能夠訪問Access數據庫。我認爲,這就是爲什麼它不能在64位操作系統:)

    關於運行,我建議得到有關錯誤的更多細節,並用它創建一個新的問題:「運行一個功能時出現錯誤」 。

    玩得開心,好運!