Reputation: 833
I have a web application project. I generated the DLL and import it in another project. I implemented VirtualPathProvider
.
I followed this web site: http://support.microsoft.com/kb/910441/en-us?spid=8940&sid=global, and everything works until I add another site master.
site_export.master
and changed its Build Action to Embedded Resource.GetManifestResourceStream()
returns null
when I load site_export.master
.GetManifestResourceNames()
to check if site_export.master
exists in the DLL and it does. It's in the list. All of the name spaces match. I didn't list the name space out here.Why can't GetManifestResourceStream()
load my new site_export.master
? It loads site.master
just fine. I know my DLL is loaded because I can see other files in the DLL.
Upvotes: 62
Views: 105722
Reputation: 145
I did this to make it work:
Step 1: Select the resource (CRDF.xsl in my case) and right click > Properties. Set Build Action to "EmbeddedResource" and Logical Name to name of your choice, e.g. CRDFXSL.
Step 2 : Change your Source code like this:
Assembly _assembly;
_assembly = Assembly.GetExecutingAssembly();
xslStream = _assembly.GetManifestResourceStream("CRDFXSL");
_xmlReader = XmlReader.Create(xslStream);
Thus everything went smoooooooth..
Upvotes: 14
Reputation: 56
Hint and Caution: If the "Assembly name" and "Default namespace" does not match in the project file then also GetManifestResourceStream would return null. GetManifestResourceNames still returns the names of assemblies but during loading the manifest would not work.
Upvotes: 4
Reputation: 5483
Remember the following issues...
Step 1. Build action set to embedded resource see
C#’s GetManifestResourceStream Gotcha
Step 2. Use namespace.resourcename
see GetManifestResourceStream() returns null ?
Actually, this method returns null if a private resource in another assembly is accessed and the caller does not have ReflectionPermission
with the ReflectionPermissionFlag.MemberAccess
flag.
Upvotes: 110
Reputation: 795
Try this:
Dim ctx As Windows.ApplicationModel.Resources.Core.ResourceContext = New Windows.ApplicationModel.Resources.Core.ResourceContext()
ctx.Languages = {Globalization.CultureInfo.CurrentUICulture.Name}
Dim rmap As Windows.ApplicationModel.Resources.Core.ResourceMap = Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap
Dim res = rmap.GetValue("Assets/sample.png", ctx)
Dim resFile = Await res.GetValueAsFileAsync
The Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap
list all resources.
Upvotes: 0
Reputation: 5369
Side-hint. To make sure you're in the right assembly and with right name: dump and evaluate all the resources available in your target assembly
string[] names = assembly.GetManifestResourceNames();
(in my case, I misused a namespace from another assembly)
Upvotes: 97