我有一个简单的C#Console应用程序,它读入指定用户的XML文件,对其运行XSLT转换,并输出结果。
当我将应用分发给用户时,我想分发一个.EXE文件。我的源代码包含3个文件:.csproj文件,.cs代码文件和.xslt样式表。
如何设置csproj以便.xslt在输出中“嵌入”并且最终用户无法看到或修改?
看起来很简单,但我无法理解,谷歌也没有太大用处。
答案 0 :(得分: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
}
答案 1 :(得分:14)
你可以将它嵌入你的装配中。
在解决方案中添加文件,将构建操作设置为嵌入资源。
您需要阅读文件的地方使用http://msdn.microsoft.com/en-us/library/xc4235zt.aspx Assembly.GetManifestResourceStream,它将为您提供一个流,您可以写入文件或直接使用。
如果您不确定资源的名称,我会发现Assembly.GetManifestResourceNames
可以列出所有资源。