2

我目前正在开发一个 Windows 应用商店应用程序,该应用程序最终将在 ARM 设备可用时针对它们。目前,我一直在台式计算机上使用 Visual Studio 进行开发和测试,一切正常。但是,当我尝试创建一个可以传递给公司内其他人用于测试目的的应用程序包时,该应用程序将无法正常运行。

该解决方案包括两个项目。第一个是设置为构建 dll 文件的 C++ 项目。这样做的目的是公开 C# 项目似乎无法访问的 Direct2D 和 DirectWrite 库。第二个项目是 C# 项目,它引用这个 dll 来绘制函数,并包含一个 XAML 接口和大部分程序逻辑。所有这些都可以在我的开发机器上从 Visual Studio 中完美运行(以及在安装包时)。

当我将包文件发送给公司内的其他人时,使用 PowerShell 脚本安装似乎可以正常工作。磁贴出现在开始屏幕中,程序将启动几秒钟。C# 和 XAML 界面出现,但应用程序的 DirectX 部分不可见,整个应用程序将在几秒钟内关闭。这让我相信 dll 在安装时可能没有正确安装或引用。我检查了包文件,构建过程完成后,dll文件包含在包中。

我已经打包了几个不同的测试程序(MSDN 示例),它们都安装在他们的机器上,但我们得到的结果相同,它们不会运行(同样,在构建它们时,所有示例都在我的开发机器上运行良好)。唯一正常工作的测试项目是一个根本不使用 DirectX 的简单 C# 项目。我尝试的任何 DirectX 示例都失败了(包括根本不使用 C# 的本机 C++ 示例)。

需要明确的是,我用于构建的过程将转到 Project -> Store -> Create App Packages 并选择 No 选项以上传到 Windows Store。

有没有人对构建或安装过程可能出现的问题有任何想法?

提前感谢您的帮助!

4

3 回答 3

2

Does it work with the Metro Sideloader? I am not sure if it just adds a UI to the Powershell script, but it works for my team and me for testing...

Good luck!

于 2012-10-22T15:40:50.503 回答
1

您是否将 DirectX 应用程序的调试版本加载到未安装 Windows SDK 的计算机上?Visual Studio 的默认 DirectX 项目和 MSDN 上的示例在创建 D3D 设备时都请求 D3D11_CREATE_DEVICE_DEBUG 标志。如果运行代码的机器上未安装 Windows SDK,则设备创建将失败。

以下是一些不同的选项,可让您解锁自己。这些中的任何一个都应该给你想要的结果:

  • 创建一个发布包并部署它而不是调试包。

  • 或 - 转到 DirectXBase.cpp 并从代码中删除 D3D11_CREATE_DEVICE_DEBUG 标志。

  • 或 - 在目标计算机上安装 Visual Studio 的远程调试工具。这将安装必要的 SDK 组件以允许创建 D3D 调试设备。关于这个选项的另一个很酷的事情是,一旦你设置好了,你就不必手动创建包并再侧加载它们了。只需告诉 Visual Studio ARM 机器的名称,然后按 F5 即可远程部署它。更多信息在这里:http: //msdn.microsoft.com/en-us/library/vstudio/bt727f1t.aspx

于 2012-12-31T23:48:43.740 回答
0

您如何在项目中部署本机 DLL?您是否使用项目到项目的引用?您能否验证您的 DLL 是否在最终包中,在包应用程序目录的根目录中?

我建议使用Sysinternals Procmon来监视目标机器上的应用程序负载。如果它崩溃或失败,您可以查看它试图加载和失败的 DLL 的日志历史记录。通常这将显示为一系列重复的 DLL 加载探测(它将尝试从应用程序目录加载 dll,然后继续尝试许多其他路径)。

于 2013-03-04T18:28:52.410 回答