2013-03-07 138 views
4

我在ASP.NET MVC应用程序中嵌入了一个资源(一个XSD文件)。现在,我想从代码中检索这个文件。清单资源(Assembly.GetManifestResourceStream)的资源名称是什么?

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

嗯,我没有觉得这非常有帮助,当然,在MSDN上找不到任何示例。清单资源的名称是什么?它是文件的名称?它是文件的完整路径和名称?还是它是一个独立的名称,给予资源本身,如果是这样,我该如何设置这个名称?

回答

14

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

一个快速的方法,找出肯定的:使用Assembly.GetManifestResourceNames方法:

string[] result = myAssembly.GetManifestResourceNames(); 

...并在调试检查的result内容。

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

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

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

+0

这不只是程序集名称;它包含在程序集设置中定义的“Root Namespace”。我通常会将根名称空间留为空白(VB.NET),并且对于我而言,资源名称永远不会受限于名称空间 - 即使在资源属性中设置了“自定义名称空间”。 – nunzabar 2013-03-12 12:12:54