我已经使用XSD创建了自定义配置部分.为了解析这个新模式之后的配置文件,我加载了资源(我的.xsd文件):
public partial class MonitoringConfiguration
{
public const string ConfigXsd = "MonitoringAPI.Configuration.MonitoringConfiguration.xsd";
public const string ConfigSchema = "urn:MonitoringConfiguration-1.0";
private static XmlSchemaSet xmlSchemaSet;
static MonitoringConfiguration()
{
xmlSchemaSet = new XmlSchemaSet();
Stream xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(ConfigXsd);
XmlReader schemaReader = XmlReader.Create(xsdStream);
xmlSchemaSet.Add(ConfigSchema, schemaReader);
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我的资源是:MonitoringConfiguration.xsd.而另一个部分类的名称空间(表示.xsd文件背后的代码)是MonitoringAPI.Configuration.
问题出在这里:
Stream xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(ConfigXsd);
Run Code Online (Sandbox Code Playgroud)
xsdStream为null,所以我猜想无法找到资源!但为什么?
谢谢
我在ASP.NET MVC应用程序中嵌入了一个资源(一个XSD文件).现在,我想从代码中检索此文件.
查看文档Assembly.GetManifestResourceStream(),它需要一个字符串参数,即"请求清单资源的区分大小写的名称".
好吧,我发现它没有那么有用,当然,在MSDN上找不到任何示例.清单资源的名称是什么?它是文件的名称吗?它是文件的完整路径和名称吗?或者它是一个单独的名称,给予资源本身,如果是这样,我该如何设置该名称?
如何使用以下代码仅提取文件名(不包括命名空间)?目前,此代码包含 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))
Run Code Online (Sandbox Code Playgroud) 每当我完成任务时,它总是让我感到困惑Path-Resolution.我有关于报告问题的以下信息:
ASP.NET MVC-5 Applicationfont fileieMyriadPro-SemiBold.ttf//a value receives a path + name of the file in variable i.e. name
string name = "myApplicationName.fonts.MyriadPro-Semibold.ttf";
//object (named as assembly) of class System.Reflection.Assembly.
var assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(name))
// stream always gets null value (don't know why!)
{
if(stream != null)
{
//myCode waiting for above stream not to be null :-(
}
else
{
throw new ArgumentException("No resource with name " …Run Code Online (Sandbox Code Playgroud)