You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 2.1中含VB脚本的XSLT转换抛出PlatformNotSupportedException

关于.NET Core 2.1支持含VB脚本的XSLT转换问题

嗨,我来帮你理清这个问题哈~

首先直接给你结论:.NET Core 2.1完全不支持在XSLT中嵌入VB(或JScript/C#)脚本,这就是你遇到PlatformNotSupportedException并提示“Compiling JScript/CSharp scripts is not supported”的核心原因。

为什么会出现这个异常?

.NET Core从设计之初就为了轻量化和跨平台,砍掉了.NET Framework里依赖旧脚本编译机制的XSLT脚本支持。不仅是2.1版本,后续的.NET Core 3.x、.NET 5及以上版本也都不提供这个特性。哪怕你在代码里设置了XsltSettings.TrustedXslt(这个设置在.NET Framework中是允许执行脚本的开关),在.NET Core环境下也完全不会生效——因为底层根本没有对应的脚本编译实现。

针对你的代码和问题的解决方案

你的这段代码:

XslCompiledTransform xslTransform = new XslCompiledTransform();
using (StringReader sr = new StringReader(xmlfile))
{
    using (XmlReader xr = XmlReader.Create(sr))
    {
        xslTransform.Load(xr, XsltSettings.TrustedXslt, myResolver);
    }
}

在.NET Framework环境下是可以正常运行的,但在.NET Core 2.1里必然触发异常。你可以从以下几个方向解决:

  • 迁移脚本逻辑到纯XSLT语法:把XSLT中的VB脚本替换成XSLT 1.0原生支持的功能;如果需要更复杂的逻辑,也可以考虑使用支持.NET Core的第三方XSLT库(比如Saxon-HE,它支持XSLT 2.0/3.0,功能更强大)。
  • 切换回.NET Framework运行:如果你的业务逻辑必须保留VB脚本,只能选择在.NET Framework环境下运行这段代码,因为只有它完整支持XSLT嵌入脚本的特性。
  • 用扩展对象替代脚本:把VB脚本里的逻辑提取出来,用C#实现成自定义类,然后通过XsltArgumentList把这个类的实例传递给XSLT,在XSLT中调用扩展对象的方法来完成原本脚本的功能。

内容的提问来源于stack exchange,提问作者Gaurav Upadhyay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:47:22