我无法访问随Windows Phone 8应用打包的文本文件。
以下是代码:
var ResrouceStream = Application.GetResourceStream(new Uri("Data-Test.docx", UriKind.Relative));
if (ResrouceStream != null)
{
Stream myFileStream = ResrouceStream.Stream;
if (myFileStream.CanRead)
{
// logiic here
retrun "Hi";
}
}
else
{
return "hello";
}
看似简单,但应用程序总是返回“你好”。我已将文件放在root中,也放在资源中,将其更改为内容 - 复制并不复制,资源复制并且不复制但总是返回“hello”。
花费了几个小时的时间,我能找到的所有解决方案都显示了上述解决方案或非常相似!
我做错了什么?
编辑:当我部署到手机或模拟器时返回“hello”。 还试过“/ Data-Test ...”,@“\ Data-Text ...,@ /”数据测试......!
更新1:
string aReturn = "";
var asm = Assembly.GetExecutingAssembly();
//Use this to verify the namespacing of the "Embedded Resource".
//asm.GetManifestResourceNames()
// .ToList()
// .ForEach(name => Debug.WriteLine(name));
var ResourceStream = asm.GetManifestResourceStream("ContosoSocial.Assets.QuizQuestions.QuizQuestions-Test1.docx");
if (ResourceStream != null) // <--CHECKED AND DOES NOT EQUAL NULL
{
Stream myFileStream = ResourceStream;
if (myFileStream.CanRead) // <-- CHEACKED AND CAN READ
{
StreamReader myStreamReader = new StreamReader(myFileStream);
LOGIC & EXCEPTION HERE...?
string myLine = myStreamReader.ReadLine();
}
else
{
aReturn = "myFileStream.CanRead = true";
}
}
else
{
aReturn = "stream equals null";
}
Debug.WriteLine(aReturn);
}
将myFileStream分配给StreamReader对象会引发异常空指针。我以为我会将myFileStream包装到StreamReader中,这样我就可以一次读取一行...?这是我的第一个c#项目,我不熟悉它的语法和类。
更新2: 好的我加了......
Debug.WriteLine(aReturn);
... ...以下
string myLine = myStreamReader.ReadLine();
...并注意到它只检索了2个字符'PK'! 所以将.docx文件保存为.txt并重新插入adn更改的构建副本到嵌入式 - 不要复制...快乐的日子它现在拉掉文件中的第一行。
感谢OmegaMan对此的帮助: - )
答案 0 :(得分:1)
Embedded Resource
代码:
var asm = Assembly.GetExecutingAssembly();
// Use this to verify the namespacing of the "Embedded Resource".
// asm.GetManifestResourceNames()
// .ToList()
// .ForEach(name => Debug.WriteLine(name));
var f1 = asm.GetManifestResourceStream("UnitTests.Resources.NexusResponse.xsd");
请注意,这不是在WP8上测试的,但GetExecutingAssembly声称可以在.Net中使用。如果您的命名空间错误,请取消注释代码并显示或调试以确定资源及其命名空间。