9

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

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

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

看起来很容易,但我想不通,谷歌也不是太有用。

4

2 回答 2

31

将该文件添加到您的项目中,然后选择该文件并转到“属性”窗口(按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
}
于 2009-11-17T13:54:21.337 回答
15

您可以将其嵌入到您的程序集中。

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

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

如果您不太确定您的资源有什么名称,我发现Assembly.GetManifestResourceNames列出所有资源很有用。

于 2009-11-17T13:55:25.733 回答