xsltc:如何在 DLL 中嵌入 XML 文件

Posted

技术标签:

【中文标题】xsltc:如何在 DLL 中嵌入 XML 文件【英文标题】:xsltc: how to embed XML files in DLL 【发布时间】:2020-07-02 00:02:20 【问题描述】:

我在开发者控制台 (ms visual studio) 中使用 xsltc.exe。我尝试生成一个可以在 .NET 项目中使用的 DLL。

xsltc /settings:dtd /settings:document /settings:script  /c:Bk24.Specs  specs.xsl  /out:Bk24Specs.dll

我之前已经成功生成了很多这样的DLL,但是现在我遇到了一个大问题。当前 XSL 包含对 XML 的引用

<xsl:variable name="spcodes" select="document('specialCodes.xml')/list/data" />

我成功地为这个模板生成了 DLL。我在 .NET 项目中添加了对此 DLL 的引用。但随后,应用程序抛出异常

找不到文件 (c:\projects\bk24\specialCodes.xml)

在真实的生产环境中。当然,在客户的工作站上没有C:\projects\bk24\ 这样的目录。这是我的开发机器上的目录,但是当我运行 xsltc.exe 时,我将 specialCodes.xml 放入放置 XSL 的同一目录中。我希望xsltc.exe查看目录,发现XSL和XML在同一个目录,所以,生成器会将XML嵌入到这个DLL中,但是,似乎不是......

我该如何解决这个问题?

【问题讨论】:

您可以在 XSLT 中做的是将其他 XML 内联为参数或变量,例如&lt;xsl:variable name="spcodes-rtf"&gt;&lt;list&gt;&lt;data&gt;a&lt;/data&gt;&lt;data&gt;b&lt;/data&gt;&lt;/list&gt;&lt;/xsl:variable&gt; 然后使用(对于像 XslCompiledTransform 支持的 XSLT 1)&lt;xsl:variable name="spcodes" xmlns:exsl="http://exslt.org/common" select="exslt:node-set($spcodes-rtf)/list/data"/&gt; 你可以把xml变成资源。docs.microsoft.com/en-us/visualstudio/sharepoint/… @MartinHonnen 非常感谢!这正是对我的帮助! 【参考方案1】:

如果它只是一个只读文件,则在文本编辑器中打开该文件并复制它。然后将其作为字符串嵌入到任何 cs 类中并使用XElement.Parse(that_string)

读取

【讨论】:

以上是关于xsltc:如何在 DLL 中嵌入 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

C#项目中如何调用C#写的dll中的资源文件,如 xml文件

如何在单个EXE中嵌入多语言* .resx(或* .resources)文件?

我可以在 DLL 中嵌入其他文件吗?

如何把dll嵌入到exe文件中

C# - 如何将 DLL 嵌入到项目中? [复制]

在可执行文件中使用嵌入式 .dll