清单资源的资源名称是什么(Assembly.GetManifestResourceStream)?

我在ASP.NET MVC应用程序中嵌入了一个资源(一个XSD文件)。 现在,我想从代码中检索此文件。

查看Assembly.GetManifestResourceStream()的文档,它接受一个字符串参数,即“请求的清单资源的区分大小写的名称”。

好吧,我发现它没有那么大的帮助,当然,在MSDN上找不到任何例子。 清单资源的名称是什么? 它是文件的名称吗? 它是文件的完整路径和名称吗? 或者它是一个单独的名称给予资源本身,如果是这样,我该如何设置该名称?

如果我没记错的话,它是程序集的名称加上文件的全名(包括扩展名),它们之间有一个点。

一个快速查找的方法:使用Assembly.GetManifestResourceNames方法:

 string[] result = myAssembly.GetManifestResourceNames(); 

…并在调试器中检查result的内容。

ETA:哎呀,如果你只有一个资源,你可以使用这个代码获取名称:

 string name = myAssembly.GetManifestResourceNames()[0]; 

我不建议这样做:我发现有时VS会创建空资源文件并将它们编译到程序集中,因此您可能拥有比您想象的更多的程序集资源。

ETA 2018-06-26:这是我在2013年没有想到的另一种方式。这将根据原始资源的名称为您提供资源名称:

 string resourceFileName = "myResource.xsd"; string resourceName = myAssembly.GetManifestResourceNames() .Where(name => name.Contains(resourceFileName)) .FirstOrDefault();