我的Silverlight项目中有一个文件,位于文件夹中。
我的项目名为Display
Solution Explorer结构:
/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,并没有给我很多帮助来确定问题。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
将文件的构建操作设置为“资源”,而不是“内容”。
NullReferenceException
来自Application.GetResourceStream(u).Stream
。 GetResourceStream
返回null
,因为该文件不可用,因为它是错误的构建操作。访问空引用上的Stream
然后触发异常。
编辑:还要确保你的Uri“显示;” part是容纳obj文件的程序集的正确名称。
只是澄清一下。如果希望将文件与各种程序集一起放在XAP文件中,请使用Content
。然后,您可以访问该文件,而不使用前缀“Display; component”路径。 (注意:在我的脑海中,我认为我没有用Application.GetResourceStream
以这种方式加载“内容”资源,因此我不确定它是否会起作用,但我怀疑它会)。我还怀疑如果你在不同的路径/项目中有相同的文件名,这可能会导致问题。如果要与多个项目/程序集共享同一资源/文件,此方法特别有用。
使用Resource
将文件嵌入嵌入程序集DLL中。有了这个,您需要指定要查看的程序集(因此“Display; component”前缀)。但是,如果要打包预编译的程序集以便在Silverlight项目中使用,或者希望以不同方式管理文件,则这是必要的。
答案 1 :(得分:0)
您可以尝试在项目上启用Silverlight调试,这样您就可以逐步执行SL代码,转到项目属性然后在Debug上一直向下并启用Silverlight调试器,然后运行您的项目和SL断点将被击中。