我正在開發使用DirectX進行圖形渲染的應用程序。我必須指出,我沒有使用XNA或SlimDX,儘管我可能應該這樣做。但是,在項目啓動時我不知道這一點,現在已經太晚了,因爲需要很長時間才能轉換爲其中的任何一個。部署使用DirectX程序集的C#應用程序
也就是說,我需要將應用程序部署到用戶。在我的項目,我引用如下組件:
- Microsoft.DirectX
- Microsoft.DirectX.Direct3D
- Microsoft.DirectX.Direct3DX
我只需要這些組件,閒來無事。用戶需要在其計算機上安裝DirectX作爲先決條件。因此,我發現將這些DirectX DLL包含到我的應用程序文件夾或GAC中是不必要的。
我遇到了一些環境問題,而其他工作完美。我追溯了DirectX程序集是否在%windir%\ assembly中註冊的問題。如果此處列出了DirectX程序集,則運行該應用程序。如果沒有 - 它無法啓動。
問題是,即使DirectX安裝在所有計算機上(dxdiag的作品,其中列出了DirectX文件),其中一些計算機中沒有列出這些程序集。發生這種情況時,應用程序失敗,System.IO.FileNotFound例外:
無法加載文件或程序集「Microsoft.DirectX.Direct3D,版本= 1.0.2902.0,文化=中性公鑰= 31bf3856ad364e35」或一個的依賴關係。該系統找不到指定的文件。
例如,如果最新的獨立安裝程序是從Microsoft網站下載並安裝的,則會註冊程序集。當他們沒有安裝時,我不確定這種情況,但它發生了。經常。
我的問題:
- 爲什麼有時的DirectX註冊這些組件有時不?
- 從 應用程序中引用DirectX程序集的正確方法是什麼?
它們是不同機器和開發PC上的相同組件版本嗎? – 2012-03-26 10:34:25
@Adam其實,我不確定。我的目標是可以追溯到2005年的DirectX 9 DLL。一些用戶正在安裝DirectX 11(當然這是更新的),並且應用程序失敗。我認爲更新版本的DirectX應該安裝所有以前的DLL版本,以便允許應用程序兼容性。如果不是這種情況,我不得不引用多個版本的程序集。我對嗎? – 2012-03-26 11:10:16
從DirectX文檔看,它看起來好像部署了每個版本。你有沒有想過在你的安裝包中包含DirectX安裝。按照http://msdn.microsoft.com/en-us/library/windows/desktop/ee416644(v=vs.85).aspx – 2012-03-26 11:52:03