我在我的类库中添加了一个XML文件作为嵌入式资源,方法是使用Visual Studio中的项目属性访问,然后使用添加资源|添加现有文件...
我尝试使用以下代码访问该文件,但我一直收到返回的null引用。有人有什么想法吗?
var path = Server.MapPath("~/bin/MyAssembly.dll");
var assembly = Assembly.LoadFile(path);
var stream = assembly.GetManifestResourceStream("MyNamespace.filename.xml");
答案 0 :(得分:6)
我发现在Visual Studio中使用项目属性对话框的“资源”选项卡会更容易。然后,您通过以下方式生成对资源的强类型引用:
Properties.Resources.Filename
答案 1 :(得分:3)
MSDN page for GetManifestResourceStream做了这个说明:
此方法返回空引用 (如果是私有的话,在Visual Basic中没有) 另一个程序集中的资源是 访问和调用者没有 ReflectionPermission与 ReflectionPermissionFlag.MemberAccess 标志。
您是否在汇编中将资源标记为“公开”?
答案 2 :(得分:0)
我发现这篇文章很好地解释了如何设置它:http://www.devx.com/dotnet/Article/10831/1954
在这种情况下可能有所帮助的一件事是使用不同的方法来确定嵌入资源的位置。
我个人更喜欢这种方法而不是使用“资源”选项卡,因为它允许我使用其他工具向项目添加资源以包含在编译中。我不必使用此工具的GUI