2

Silverlight プロジェクト内のフォルダー内にファイルがあります。

私のプロジェクトはディスプレイと呼ばれています

ソリューション エクスプローラーの構造:

/Resources
    cube.obj

私のコードは次のとおりです。

Uri u = new Uri(@"Display;component/Resources/cube.obj", UriKind.Relative);
Stream stream = Application.GetResourceStream(u).Stream;
StreamReader reader = new StreamReader(stream);

関連する場合は、cube.obj のビルド アクションが Content に設定されています。

JavaScript で発生する NullReferenceException を取得していますが、問題を特定するのにあまり役に立ちません。

何か案は?

ありがとう!

4

2 に答える 2

2

ファイルのビルド アクションを「コンテンツ」ではなく「リソース」に設定します。

NullReferenceExceptionから来ていApplication.GetResourceStream(u).Streamます。 間違ったビルド アクションであるため、ファイルが使用できないため、GetResourceStream返されます。null 参照にnullアクセスすると、例外が発生します。Stream

編集: また、Uri が「Display;」であることを確認してください。部分は、obj ファイルを格納しているアセンブリの適切な名前です。

明確にするために。Contentファイルをさまざまなアセンブリと一緒に XAP ファイルに配置する場合に使用します。その後、プレフィックス「Display;component」パスなしでファイルにアクセスできます。(注:頭の中で、「コンテンツ」リソースをこの方法でApplication.GetResourceStream具体的にロードしたとは思わないので、うまくいくかどうかはわかりませんが、うまくいくと思います)。また、同じファイル名が異なるパス/プロジェクトにある場合、これが問題を引き起こす可能性があると思います。この方法は、同じリソース/ファイルを複数のプロジェクト/アセンブリと共有する場合に特に便利です。

を使用すると、アセンブリ DLLResourceに埋め込まれたファイルが維持されます。これにより、参照するアセンブリを指定する必要があります (したがって、"Display;component" プレフィックス)。ただし、これは、Silverlight プロジェクトで使用するためにコンパイル済みのアセンブリをパッケージ化している場合や、ファイルを別の方法で管理したい場合に必要です。

于 2012-08-13T19:46:16.513 に答える
0

プロジェクトで Silverlight デバッグを有効にしてみてください。そうすれば、SL コードをステップ実行できます。プロジェクトのプロパティに移動し、[デバッグ] でずっと下に移動して、Silverlight デバッガーを有効にし、プロジェクトと SL を実行します。ブレークポイントがヒットします。

于 2012-08-13T19:29:53.580 に答える