我在我的 ASP.NET MVC 应用程序中嵌入了一个资源(一个 XSD 文件)。现在,我想从代码中检索这个文件。
查看 的文档Assembly.GetManifestResourceStream()
,它需要一个字符串参数,即“被请求的清单资源的区分大小写的名称”。
好吧,我觉得这不是很有帮助,当然,在 MSDN 上也找不到示例。清单资源的名称是什么?是文件名吗?它是文件的完整路径和名称吗?还是为资源本身提供了一个单独的名称,如果是,我该如何设置该名称?
我在我的 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();