部署使用DirectX程序集的C#应用程序
我正在开发使用DirectX进行图形渲染的应用程序。我必须指出,我没有使用XNA或SlimDX,尽管我可能应该这样做。然而,我在项目启动时并不知道这一点,现在已经太迟了,因为转换成这些都需要很多时间 也就是说,我需要将应用程序部署到用户。在我的项目中,我引用了以下程序集:部署使用DirectX程序集的C#应用程序,c#,deployment,directx,assemblies,C#,Deployment,Directx,Assemblies,我正在开发使用DirectX进行图形渲染的应用程序。我必须指出,我没有使用XNA或SlimDX,尽管我可能应该这样做。然而,我在项目启动时并不知道这一点,现在已经太迟了,因为转换成这些都需要很多时间 也就是说,我需要将应用程序部署到用户。在我的项目中,我引用了以下程序集: Microsoft.DirectX Microsoft.DirectX.Direct3D Microsoft.DirectX.Direct3DX 我只需要这些组件,别的什么都不需要。用户需要在其计算机上安装DirectX作
- Microsoft.DirectX
- Microsoft.DirectX.Direct3D
- Microsoft.DirectX.Direct3DX
我在飞行模拟器的SimConnect DLL中也经历过类似的事情。在这种情况下,如果用户在安装.Net framework之前安装了飞行模拟器,则DLL不会添加到GAC中 我猜这里也发生了类似的事情
当然,这意味着它只能出现在默认情况下没有.Net的XP系统上,并且在安装.Net后重新安装DX后,它应该得到修复。我在飞行模拟器的SimConnect DLL中遇到过类似的情况。在这种情况下,如果用户在安装.Net framework之前安装了飞行模拟器,则DLL不会添加到GAC中 我猜这里也发生了类似的事情
当然,这意味着它只能出现在默认情况下没有.Net的XP系统上,在安装.Net后重新安装DX后,它应该得到修复。我对您看到这些问题并不感到惊讶。您依赖的是一个非常旧、已停止使用且不再受支持的API。出于兼容性目的,最新的运行时安装程序仍将安装程序集,但默认情况下不包括这些程序集,因为它们不希望任何人使用它们
老实说,他们真的很老(比如,10岁),他们有许多已知的错误和问题,永远不会被修复,并且有完全可以接受的替代品。只要您继续支持您的应用程序,您就应该切换到其中一个应用程序,或者让自己处理类似的问题。看到这些问题,我并不感到惊讶。您依赖的是一个非常旧、已停止使用且不再受支持的API。出于兼容性目的,最新的运行时安装程序仍将安装程序集,但默认情况下不包括这些程序集,因为它们不希望任何人使用它们
老实说,他们真的很老(比如,10岁),他们有许多已知的错误和问题,永远不会被修复,并且有完全可以接受的替代品。只要你继续支持你的应用程序,你就应该切换到其中一个,或者让自己处理类似的问题。它们在不同的机器和你的开发PC上是相同的组装版本吗?@Adam实际上,我一点也不确定。我的目标是2005年的DirectX 9 DLL。一些用户安装了DirectX 11(当然是更新的),应用程序失败。我假设DirectX的较新版本也应该安装所有以前的DLL版本,以便实现应用程序兼容性。如果不是这样,我将不得不引用多个版本的程序集。我说的对吗?从DirectX文档来看,每个版本都部署了。您是否考虑过在安装包中包含DirectX安装。因此,即使他们安装了它,安装也会悄悄地消失,尽管如果他们没有安装,它会悄悄地安装,然后继续。DirectX 11对以前版本的支持通过某种虚拟化而下降。如果您的程序需要DirectX 9,则需要该版本,请在您的技术支持网站上提供您构建的版本,并告诉用户安装该版本。为什么你不使用Direct X 11?它们在不同的机器和你的开发PC上是相同的汇编版本吗?@Adam实际上,我一点也不确定。我的目标是2005年的DirectX 9 DLL。一些用户安装了DirectX 11(当然是更新的),应用程序失败。我假设DirectX的较新版本也应该安装所有以前的DLL版本,以便实现应用程序兼容性。如果不是这样,我将不得不引用多个版本的程序集。我说的对吗?从DirectX文档来看,每个版本都部署了。您是否考虑过在安装包中包含DirectX安装。按照这样的说法,即使他们有