如何在.NET项目中嵌入XSLT文件以包含在输出.exe中?

Mik*_*ike 8 c# project csproj

我有一个简单的C#控制台应用程序,它读入指定用户的XML文件,对其运行XSLT转换,并输出结果.

当我将我的应用程序分发给用户时,我想分发一个.EXE文件.我的源代码由3个文件组成:.csproj文件,.cs代码文件和.xslt样式表.

如何设置csproj以使.xslt在输出中"嵌入"并且最终用户无法查看或修改?

看起来很简单,但我无法弄清楚,谷歌并没有太大的用处.

Fre*_*örk 30

将文件添加到项目中,然后选择文件并转到"属性"窗口(按F4).将构建操作设置为"嵌入式资源".这将导致文件作为资源嵌入到exe文件中.

using(Stream strm = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourAssemblyName.filename.xslt"))
using (XmlReader reader = XmlReader.Create(strm))
{
    XslTransform transform = new XslTransform();
    transform.Load(reader);
    // use the XslTransform object
}
Run Code Online (Sandbox Code Playgroud)

  • 为了扩充 Fredrik 的示例,您可以使用应用程序的命名空间作为“YourAssemblyName”,如`...GetManifestResourceStream("This.is.my.namespace.filename.xslt"))` (2认同)

Hen*_*ing 14

您可以将它嵌入到程序集中.

在解决方案中添加文件,将构建操作设置为嵌入资源.

您需要阅读文件的地方使用http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream,它将为您提供一个流,您可以写入文件或直接使用.

如果你不太确定你的资源有什么名称,我觉得Assembly.GetManifestResourceNames列出所有资源都很有用.