我正在爲使用Outlook Redemption的應用程序編寫測試,絕對必須運行64位(它連接到Windows MAPI和Outlook x64)。不幸的是,我不能讓我在64位運行測試。我試過用.runsettings
文件(編輯表示64位)和.testsettings
文件(也是編輯過的),最後我選擇了Test>TestSettings>Default Processor Architecture>64-bit
,無濟於事。MSTest拒絕運行64位?
每次,System.Environment.Is64BitProcess都是false,並且當我加載dll連接到Outlook和MAPI時,我得到了可怕的COM異常:Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))
這表明已安裝64位Outlook並嘗試訪問該進程它是32位的。
我已經重新啓動VS 2012後,進行設置更改,因爲我已經讀過的地方重新啓動可能是必要的。有沒有人有任何其他建議?我可能只是寫這個控制檯應用程序,運行非正式測試並報告其狀態,但我的下一步是將這些測試集成到自動構建。任何幫助將不勝感激。主機設置頁面中.testsettings
編輯
截圖
實驗
有趣的是,我做了一個小實驗。我用一個控制檯應用程序項目創建了一個新的解決方案我在那裏放置了一個公開的方法,只是返回true。當我運行控制檯應用程序並暫停執行時,我看起來確實在運行64位;那裏沒有問題。然後我添加了一個測試項目,創建了一個稱爲該方法的單個測試。我還添加了var is64 = Environment.Is64bitProcess
並在其後放置了一個斷點。
可以預見的是,在不改變任何選項的情況下,is64是錯誤的。我從測試下拉列表中選擇了64位默認架構,然後清理解決方案,然後再次運行測試,結果相同,運行32位。我重新啓動VS2012,清理,建造,結果相同。我創建了一個testsettings文件並在Test菜單中引用它,清理構建,相同,重新啓動,清理,構建相同。我創建了一個runsettings文件,設置爲<TargetPlatform>x64</TargetPlatform>
,引用在測試菜單中,再次運行它,並得出相同的結果。 QTAgent32.exe繼續運行該進程,並絕對拒絕我的要求,它運行64位。
我發誓,如果我必須刪除QTAgent32.exe並將QTAgent重命名爲該名稱,我會。當我想要固執的時候,我不會在電腦喉嚨裏填滿我的願望。請,如果你不想看到我虐待工作站,有人告訴我什麼是錯的。想想電腦。
也許一個愚蠢的問題,但你確定這些都是你的測試運行選擇'設置'? – Schaliasos
是的。與該文件相對應的Test菜單下的路徑菜單項在其旁邊有複選標記。 – CodeWarrior
他們在2012年修復了這個問題。有一個64位的測試主機。像其他人說的,你可以使用corflags從mstest中刪除32位唯一標誌,然後有一些許可證註冊表設置需要從註冊表節點複製,並將執行主機設置爲msil。在我的組中,我們無法添加註冊表設置來構建計算機,因此我編寫了一個小應用程序,用於生成帶有測試元數據和存根的代理程序集,以便測試執行時代理加載測試dll並執行實際測試 – user1985513