2010-08-20 46 views
3

我正在使用Visual Studio 2008在Windows 7上工作。VisualStudio單元測試找不到P/Invoke的DLL。我怎樣才能解決這個問題?

我有一個使用P/Invoke調用本地DLL的.NET程序集。我在Visual Studio解決方案中設置了一個單獨的.NET單元測試項目,通過向其中調用各種調用來測試程序集。但是,當單元測試調用程序集並且程序集使用P/Invoke進行調用時,它無法找到本機DLL。

當我編寫獨立的.NET控制檯應用程序時,沒有任何問題。程序集可以使用P/Invoke併成功找到DLL。

在使用程序集之前,我可以使用DLL的絕對路徑調用LoadLibrary來進行單元測試。但是,這種方法很醜陋,需要一條絕對路徑 - 這對其他用戶來說會有問題。

總之,我的問題是 - 如何指定或修改Visual Studio單元測試執行時正在使用的DLL搜索路徑?

任何幫助將不勝感激。

問候, 丹

回答

3

這聽起來像問題是,你的本機DLL不被部署單元測試的DLL。這不是一個不常見的問題,因爲託管的DLL沒有引用元數據中的本機元素,因此部署包不知道要部署它們。

最合適的解決方案是修復部署,而不是更改DLL搜索路徑。但這是一個單元測試的具體問題。你能告訴我們你正在使用什麼框架,以便我們能幫助你嗎?

3

如果您使用的是Visual Studio 2008的集成測試框架,你應該看看DeploymentItemAttribute Class

基本上你只裝飾你的測試方法與此屬性,它會自動複製的部署項目到測試之前的輸出目錄執行。你甚至可以使用這個複製整個依賴關係樹。它支持可變擴展和相對路徑。

另請參閱How to: Configure Test Deployment以獲取有關VS2008測試部署的更一般信息。

相關問題