我有一个生成一些WebPages的c#程序。在我的项目中,我通过ResourceManager将一些JavaScript文件添加到项目中。
现在我想获取所有ResourceNames并将它们保存到我的目标路径。
我知道这个问题在这里被问了一百万次,但我无法让它发挥作用。
这里我尝试列出我的所有资源
foreach (var res in Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
....
}
但是我没有在res中获得资源名称
"WindowsFormsApplication3.Form1.resources"
第一次在循环中
并且"WindowsFormsApplication3.Properties.Resources.resources"
第二次
并且"WindowsFormsApplication3.Properties.Resources.Designer.cs"
第三次
我做错了什么?
答案 0 :(得分:1)
您只是获取清单资源的名称,这与资源文件(resx)资源不同。
要从清单资源文件名中获取资源文件资源,例如"WindowsFormsApplication3.Properties.Resources.resources"
,您必须这样做:
foreach (var manifestResourceName in Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(manifestResourceName))
{
if (stream != null)
{
using (var rr = new ResourceReader(stream))
{
foreach (DictionaryEntry resource in rr)
{
var name = resource.Key.ToString();
string resourceType;
byte[] dataBytes;
rr.GetResourceData(name, out resourceType, out dataBytes);
}
}
}
}
}
然后您可以将字节保存在任何地方。