从同一项目访问XSLT文件作为资源?
我有一个XSLT文件,我想加载并用于转换XML文件。 我已将文件添加到与使用它的代码相同的项目中,并将其放在“Resources”文件夹中,并将Build Action设置为“Resource”。
这是尝试访问该文件的代码:
XslCompiledTransform myXslTransform = new XslCompiledTransform(); myXslTransform.Load(@"[projectName];component/Resources/OrderManagement/OrderOverview.xslt");
…其中[projectName]是项目的名称。 然而,这似乎不起作用。 我玩过不同的路径,但不知怎的,我似乎没有把它弄好。 我确定这只是一件小事,但我在互联网(或这里)找到的文章都没有帮助过我。
有人可以帮忙吗?
一位同事帮我找到了解决方案。 我们通过项目的属性添加了资源,以便我可以轻松访问其内容并使用以下代码。
using (var reader = new StringReader(Resources.OrderOverview)) { using (XmlReader xmlReader = XmlReader.Create(reader)) { myXslTransform.Load(xmlReader); myXslTransform.Transform(fileName, arguments, xmlTextWriter); } }
这与outcoldman所建议的非常相似,即微妙地区别对资源的访问方式不同。
将构建操作从Resource更改为Embedded Resource,之后您可以执行类似操作
XslCompiledTransform myXslTransform = new XslCompiledTransform(); var assembly = typeof(SomeTypeFromAssemblyWithResource).Assembly; using (var stream = assembly.GetManifestResourceStream("Resources.OrderManagement.OrderOverview.xslt")) { using (var xmlReader = XmlReader.Create(stream)) { myXslTransform.Load(xmlReader ); } }
dll中的资源名称可能很棘手,因此您可能希望首先使用Assembly.GetManifestResourceNames知道资源名称。 编译器根据文件夹和程序集生成名称。
上述就是C#学习教程:从同一项目访问XSLT文件作为资源?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029992.html