2

我的 Silverlight 项目中有一个文件,位于一个文件夹中。

我的项目叫做 Display

解决方案资源管理器结构:

/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是因为文件不可用,因为它是错误的构建操作。访问Stream空引用然后触发异常。

编辑:还要确保你的 Uri "Display;" 部分是包含 obj 文件的程序集的正确名称。

只是为了澄清。Content当您希望将文件与各种程序集一起放置在 XAP 文件中时使用。然后,您可以访问没有前缀“显示;组件”路径的文件。(注意:在我脑海中,我不认为我已经以这种方式加载了“内容”资源,Application.GetResourceStream所以我不确定它是否会起作用,但我怀疑它会起作用)。我还怀疑如果您在不同的路径/项目中具有相同的文件名,这可能会导致问题。如果您想与多个项目/程序集共享相同的资源/文件,此方法特别有用。

使用Resource将保持文件嵌入程序集 DLL 中。有了这个,您需要指定要查看的程序集(因此有“显示;组件”前缀)。但是,如果您要打包预编译的程序集以在 Silverlight 项目中使用或希望以不同方式管理文件,则这是必要的。

于 2012-08-13T19:46:16.513 回答
0

您可以尝试在您的项目上启用 Silverlight 调试,这样您就可以单步执行 SL 代码,转到您的项目属性,然后在 Debug 上一直向下并启用 Silverlight 调试器,然后运行您的项目和您的 SL断点将被击中。

于 2012-08-13T19:29:53.580 回答