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 内联为参数或变量,例如<xsl:variable name="spcodes-rtf"><list><data>a</data><data>b</data></list></xsl:variable>
然后使用(对于像 XslCompiledTransform 支持的 XSLT 1)<xsl:variable name="spcodes" xmlns:exsl="http://exslt.org/common" select="exslt:node-set($spcodes-rtf)/list/data"/>
。
你可以把xml变成资源。docs.microsoft.com/en-us/visualstudio/sharepoint/…
@MartinHonnen 非常感谢!这正是对我的帮助!
【参考方案1】:
如果它只是一个只读文件,则在文本编辑器中打开该文件并复制它。然后将其作为字符串嵌入到任何 cs 类中并使用XElement.Parse(that_string)
【讨论】:
以上是关于xsltc:如何在 DLL 中嵌入 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章
C#项目中如何调用C#写的dll中的资源文件,如 xml文件