2

私は現在、最終的にARMデバイスが利用可能になったときに対象となるWindowsストアアプリを開発しています。今のところ、デスクトップ コンピューターで Visual Studio から開発とテストを行っており、すべて正常に動作しています。ただし、テスト目的で社内の他のユーザーに渡すことができるアプリ パッケージを作成しようとすると、アプリケーションが正しく動作しません。

このソリューションには 2 つのプロジェクトが含まれています。1 つ目は、dll ファイルをビルドするように設定された C++ プロジェクトです。これの目的は、C# プロジェクトにアクセスできないと思われる Direct2D および DirectWrite ライブラリを公開することです。2 番目のプロジェクトは、関数を描画するためにこの dll を参照し、XAML インターフェイスとほとんどのプログラム ロジックを含む C# プロジェクトです。これらはすべて、Visual Studio 内から (およびパッケージのインストール時にも) 私の開発マシンで問題なく動作します。

パッケージ ファイルを社内の他の個人に送信すると、PowerShell スクリプトを使用してインストールすることで、インストールが正常に機能しているように見えます。スタート画面にタイルが表示され、プログラムが数秒間起動します。C# と XAML インターフェイスが表示されますが、アプリケーションの DirectX 部分は表示されず、アプリケーション全体が数秒以内にシャットダウンします。これにより、インストール時にdllが正しくインストールまたは参照されていない可能性があると思われます。パッケージ ファイルを確認したところ、ビルド プロセスの完了後に dll ファイルがパッケージに含まれています。

いくつかの異なるテスト プログラム (MSDN サンプル) をパッケージ化しましたが、それらはすべてマシンにインストールされていますが、同じ結果が得られ、それらは実行されません (繰り返しますが、すべてのサンプルは、ビルド時に私の開発マシンで正常に実行されます)。正しく機能した唯一のテスト プロジェクトは、DirectX をまったく使用しない単純な C# プロジェクトでした。私が試した DirectX サンプルはすべて失敗しました (C# をまったく使用しないネイティブ C++ サンプルを含む)。

明確にするために、ビルドに使用するプロセスは、[プロジェクト] -> [ストア] -> [アプリ パッケージの作成] に移動し、Windows ストアへのアップロードには [いいえ] オプションを選択します。

ビルドまたはインストール プロセスで何が問題になっているのかについて、何か考えがある人はいますか?

助けてくれてありがとう!

4

3 に答える 3

2

Metro Sideloaderで動作しますか? PowershellスクリプトにUIを追加するだけかどうかはわかりませんが、私のチームと私にとってはテストのために機能します...

幸運を!

于 2012-10-22T15:40:50.503 に答える
1

Windows SDK がインストールされていないマシンに、DirectX アプリのデバッグ バージョンをサイドロードしていませんか? Visual Studio の既定の DirectX プロジェクトと MSDN のサンプルはどちらも、D3D デバイスの作成時に D3D11_CREATE_DEVICE_DEBUG フラグを要求します。コードを実行しているマシンに Windows SDK がインストールされていない場合、デバイスの作成は失敗します。

自分自身のブロックを解除できるようにするいくつかの異なるオプションを次に示します。これらのいずれかで、目的の結果が得られるはずです。

  • リリース パッケージを作成し、デバッグ パッケージの代わりにデプロイします。

  • または - DirectXBase.cpp に移動し、コードから D3D11_CREATE_DEVICE_DEBUG フラグを削除します。

  • または - Visual Studio 用のリモート デバッグ ツールをターゲット マシンにインストールします。これにより、必要な SDK コンポーネントがインストールされ、D3D デバッグ デバイスを作成できるようになります。このオプションのもう 1 つの優れた点は、セットアップが完了すると、パッケージを手動で作成してサイド ロードする必要がなくなることです。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 に答える