I have a Portable Library which I am using for a Windows Phone application. In that same Portable Library, I have a couple of content files (Build Action = Content).
I created a class DataReader
in the Portable Library which is supposed to return me a stream to the content file. However, with the code below I am consistently getting back null
from GetManifestResourceStream
. What am I doing wrong?
public class DataReader
{
public static Stream GetStream(string code)
{
string path = string.Format("./data/code-{0}.dat", code);
return Assembly.GetExecutingAssembly().GetManifestResourceStream(path);
}
}
Your path is wrong. You're using slashes, but in the embedded manifest resource names slashes were converted to periods during the build.
Also depending on your PCL targeted platforms, you may not even be able to call Assembly.GetExecutingAssembly()
.
Here is what you can do:
var assembly = typeof(AnyTypeInYourAssembly).GetTypeInfo().Assembly;
// Use this help aid to figure out what the actual manifest resource name is.
string[] resources = assembly.GetManifestResourceNames();
// Once you figure out the name, pass it in as the argument here.
Stream stream = assembly.GetManifestResourceStream("Some.Path.AndFileName.Ext");