C# Direct3D应用程序在其他计算机上崩溃

C# Direct3D应用程序在其他计算机上崩溃,c#,.net,crash,mdx,direct3d,C#,.net,Crash,Mdx,Direct3d,我已经使用Visual C#Express 2008(MDX)开发了几个Direct3D应用程序。它们在我的计算机上运行都没有问题,但当我试图在其他人的计算机上运行它们时,它们会崩溃。我尝试使用Clickonce安装它们,但它们仍然崩溃。我在Windows7上开发它们,它们在大多数WinVista、7和8个人电脑上崩溃,但在XP上从未崩溃,这很奇怪 我的大多数应用程序都会保存一个日志文件用于诊断,它们编程后要做的第一件事就是在日志文件中写一行“启动”,但它们甚至都没有做到这一点。我没有得到正常的

我已经使用Visual C#Express 2008(MDX)开发了几个Direct3D应用程序。它们在我的计算机上运行都没有问题,但当我试图在其他人的计算机上运行它们时,它们会崩溃。我尝试使用Clickonce安装它们,但它们仍然崩溃。我在Windows7上开发它们,它们在大多数WinVista、7和8个人电脑上崩溃,但在XP上从未崩溃,这很奇怪

我的大多数应用程序都会保存一个日志文件用于诊断,它们编程后要做的第一件事就是在日志文件中写一行“启动”,但它们甚至都没有做到这一点。我没有得到正常的.NET“未处理异常”错误;它甚至在运行时开始之前就崩溃了

这与DirectX库有关(我的其他应用程序都没有崩溃),但我知道所有的计算机都安装了DirectX和.NET,所以我对此感到非常困惑。如果我链接到非标准库,那么我会假设ClickOnce会在我发布应用程序时将它们打包

我知道你们中的大多数人都会说使用SlimDx,我确实想这样做,但在我将所有应用程序移植到其他应用程序之前,我希望能够按原样分发它们


由于我的应用程序甚至无法启动,我无法找到原因。还有其他人经历过这种情况吗?

这很难,但也许您缺少D3DCompiler_43.dll?默认情况下,它似乎没有与Windows安装捆绑在一起;我们必须将其包含在安装程序中。另外,您是否可以在应用程序启动时使用它来监视应用程序,并查看它试图加载哪些DLL?有趣的是,我不确定该DLL的作用,但我认为我确实在所有崩溃的应用程序中使用了自定义着色器。在我的项目中没有对该DLL的引用,但我将对此进行研究。(然而,我认为由于延迟加载,它不会崩溃,直到我尝试编译HLSL)。我还将查看进程监视器。我以前从没听说过这件事。