我有一个Web应用程序项目.我生成了DLL并将其导入另一个项目.我实施了VirtualPathProvider.
我关注了这个网站:http://support.microsoft.com/kb/910441/en-us?spid = 8940&sid = global,一切正常,直到我添加另一个网站管理员.
site_export.master并将其Build Action更改为Embedded Resource.GetManifestResourceStream()null加载时返回site_export.master.GetManifestResourceNames()来检查site_export.masterDLL中是否存在它确实存在.它在列表中.所有名称空间都匹配.我没有在这里列出名称空间.为什么不能GetManifestResourceStream()加载我的新site_export.master?它装site.master得很好.我知道我的DLL已加载,因为我可以看到DLL中的其他文件.
Sha*_*dat 86
请记住以下问题......
第1步.构建动作设置为嵌入式资源请参阅
C#的GetManifestResourceStream Gotcha
第2步.使用namespace.resourcename请参阅GetManifestResourceStream()返回null?
实际上,如果访问另一个程序集中的私有资源并且调用者没有ReflectionPermission该ReflectionPermissionFlag.MemberAccess标志,则此方法返回null .
Yur*_*ula 72
侧面提示.要确保您使用正确的程序集并使用正确的名称:转储并评估目标程序集中可用的所有资源
string[] names = assembly.GetManifestResourceNames();
Run Code Online (Sandbox Code Playgroud)
(就我而言,我误用了另一个程序集中的命名空间)
小智 9
我这样做是为了让它工作:
步骤1:选择资源(在我的情况下为CRDF.xsl),然后右键单击>属性.将Build Action设置为"EmbeddedResource",将Logical Name设置为您选择的名称,例如CRDFXSL.
第2步:更改源代码,如下所示:
Assembly _assembly;
_assembly = Assembly.GetExecutingAssembly();
xslStream = _assembly.GetManifestResourceStream("CRDFXSL");
_xmlReader = XmlReader.Create(xslStream);
Run Code Online (Sandbox Code Playgroud)
因此一切都变得微不足道..