2010-06-25 73 views
2

這是一個很長的故事:我最近在Visual Studio中構建了一個使用DirectX的win32應用程序,並將它發送給一些朋友以驗證它是否適用於其他機器。他們都安裝了.NET,但該應用程序並沒有爲我所有的朋友工作。System.IO.FileNotFoundException

在兩種情況下,當他們嘗試運行該程序時,出現了一些「無法加載文件或程序集Microsoft.DirectX.DirectInput版本1.0.29 ...」的錯誤。

我想他們必須有其他版本的.dll,經過一番檢查後,我發現我的參考資料是固定版本。我將所有directX dll的「固定版本」屬性更改爲false,但是當他們嘗試運行應用程序時仍然出現錯誤。

最後我試圖將應用程序中的所有DLL複製到同一個文件夾中,並且directx錯誤消失了,但他們卻在行的地方得到了「System.IO.FileNotFoundException指定的模塊找不到」錯誤該程序試圖從圖像中創建Direct3D.Texture(鏈接到圖像是正確的)。

如果你可以幫助我解決上述任何問題的提示,我將不勝感激!

+1

歡迎使用stackoverflow。如果您發佈有問題的代碼,您會發現您會得到更好的答案......很難確定哪些問題沒有看到代碼。 – Oded 2010-06-25 20:23:17

+0

您正在使用哪種託管DirectX實現? SlimDX? XNA?還有別的嗎? – Aren 2010-06-25 20:24:24

+0

@Oded:謝謝!我已經可以說在這裏很好。那麼,我可以發佈代碼,但我不明白這可能是什麼用途,因爲問題是與引用(它不完全在代碼中,據我所知)。 @Aren B:呃......好吧,我承認,我不明白這個問題。它基本上只是C#與純淨的.dll從.NET(託管DirectX) – cantrem 2010-06-25 21:44:31

回答

2

看起來您使用的是Managed DirectX,並且您的某些朋友可能沒有安裝它。據我所知,MDX的可重新分發包已不再可用。 (不是來自微軟,你可能可以找到它的地方)

請注意託管DirectX基本已過時,在很多情況下XNA是一個更好的選擇。

+0

好吧,感謝您的輸入!我會仔細看看的! – cantrem 2010-06-25 20:59:54

+0

爲了記錄,XNA取代了Managed DirectX,但它沒有**。 XNA是一個遊戲框架,而不是directx的管理門戶。 – Aren 2010-06-25 21:25:25

+0

@Aren B:我明白你的觀點。在這種情況下,你有什麼建議與我合作?我剛開始真正的編程,我還不確定先走哪條路:有DirectX,但也有OpenGL,XNA作爲框架等等(對於我現在定義堅持使用C#的語言)你會怎樣?說最好的組合是? – cantrem 2010-06-25 21:40:33

1

如果您使用的是ManagedDirectX,而不是解決此問題的快捷方式。這只是將ManagedDirectX dll複製到同一個目錄中。 MS說它不會工作,它絕對不適合生產環境。但它在大多數情況下都會起作用。

DLL的至少有:

Microsoft.DirectX.Direct3D.dll 
Microsoft.DirectX.Direct3DX.dll 
Microsoft.DirectX.dll 
+0

是啊。快,但很髒。而且,在這種情況下,它沒有奏效(在我的第一篇文章中,我寫了另一個有趣的錯誤,當我在應用程序文件夾中製作dll的副本時)。 – cantrem 2010-06-25 21:33:22

0

你的問題現在可能得到解決。

我也在兩天內遇到同樣的問題,我終於解決了它。我嘗試了很多網絡上建議的解決方案,但沒有爲我工作。我的項目引用了另一個項目,該項目又引用了Microsoft.DirectX.Direct3DX.dll。當我運行該項目時,出現異常:System.IO.FileNotFoundException:無法加載文件或程序集「Microsoft.DirectX.Direct3DX.DLL」或其某個依賴項。指定的模塊無法找到。

事實證明,這個DLL正在尋找'它的一個依賴',並且找不到它們,因爲我的機器上沒有安裝DirectX。所以我的解決方案是安裝DirectX。

請參考以下鏈接的DirectX網頁安裝程序: http://www.microsoft.com/en-in/download/details.aspx?id=35

我希望這可以幫助其他人誰面臨同樣的問題! :)

相關問題