如何使用以下代码仅提取不包括名称空间的文件名?当前,此代码包含GetManifestResourceNames()中的整个命名空间。
Assembly assembly = System.Reflection.Assembly.LoadFile(resourceLocation + @"\\" + file);
string[] names = assembly.GetManifestResourceNames();
foreach (var name in names.Where(x => x.EndsWith("xsd")).ToList())
{
using (System.IO.Stream stream = assembly.GetManifestResourceStream(name))
{
using (System.IO.FileStream fileStream = new System.IO.FileStream(System.IO.Path.Combine(outputDir, name), System.IO.FileMode.Create))
您可以使用GetManifestResourceInfo来获取其他信息,例如文件名。
以您的示例为例,您可能会得到如下所示的结果:
string[] names = assembly.GetManifestResourceNames();
foreach (var name in names.Where(x => x.EndsWith("xsd")).ToList())
{
var info = assembly.GetManifestResourceInfo(name);
if (info != null)
{
var fileName = info.FileName;
// Do your stuff that needs filename here.
}
}
编辑:如果您发现在以下情况下GetManifestResourceInfo返回null,则此SO帖子可能是相关的:为什么在调用GetManifestResourceNames时资源名称存在时GetManifestResourceStream返回null?
应该设置资源以构建“嵌入式资源”操作,并且这里提到了代码安全陷阱:http : //adrianmejia.com/blog/2011/07/18/cs-getmanifestresourcestream-gotcha/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句