2010-06-25 63 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

我希望这可以帮助其他人谁面临同样的问题! :)