如何在xslt文件中使用C#表达式体方法?
以下是xslt文件中编译时没有错误的C#方法:如何在xslt文件中使用C#表达式体方法?,c#,xslt,C#,Xslt,以下是xslt文件中编译时没有错误的C#方法: <msxsl:script language="C#" implements-prefix="user"> <msxsl:assembly name="System.Core" /> <msxsl:using namespace="System.IO" /> <msxsl:using namespac
<msxsl:script language="C#" implements-prefix="user">
<msxsl:assembly name="System.Core" />
<msxsl:using namespace="System.IO" />
<msxsl:using namespace="System.Collections.Generic"/>
<msxsl:using namespace="System.Text.RegularExpressions" />
<msxsl:using namespace="System.Linq" />
<![CDATA[
public string GetDesc(string state, string licNum, string date)
{
return string.Join("; ", new[]{ "State: " + state, "DL Number: " + licNum, "Date: " +
date }.Where(s => !string.IsNullOrWhiteSpace(s)));
}
]]>
</msxsl:script>
以下消息显示了输出中的错误和十个错误:
可以使用这种语法吗?最新的MSXML是在C#6之前发布的,因此不支持所有这些新的语言功能。最新的MSXML是在C#6之前发布的,因此不支持所有这些新的语言功能。应该可以安装NuGet软件包,这样,
xslcomiledtransform
尝试将Roslyn C#CodeDomProvider与较新的C#功能结合使用
但是,安装路径和搜索路径不匹配,因此,正如所解释的,编译器在bin\roslyn
中查找,而它安装在roslyn
中
如果我使用第一个选项“将\roslyn
子目录移动到\bin\roslyn
”(我在测试中手动执行此操作),那么C代码就像您在msxsl:script中使用的=>
一样编译并运行.NET framework和XSLEDTransform
我用上面命名的包的最新版本3.6.0和在VS2019中运行的C#.NET framework 4.7.2控制台应用程序尝试了这一点
除了DotNetCompilerPlatform one之外,还应该安装一个软件包来修复安装路径,但对于我来说,VS 2019和上面的设置并没有修复问题,因此,我能够执行的唯一成功测试是使用Windows资源管理器移动目录。应该可以安装NuGet软件包,这样,XslCompiledTransform
尝试将Roslyn C#CodeDomainProvider与较新的C#功能结合使用
但是,安装路径和搜索路径不匹配,因此,正如所解释的,编译器在bin\roslyn
中查找,而它安装在roslyn
中
如果我使用第一个选项“将\roslyn
子目录移动到\bin\roslyn
”(我在测试中手动执行此操作),那么C代码就像您在msxsl:script中使用的=>
一样编译并运行.NET framework和XSLEDTransform
我用上面命名的包的最新版本3.6.0和在VS2019中运行的C#.NET framework 4.7.2控制台应用程序尝试了这一点
除了DotNetCompilerPlatform one之外,还应该安装一个软件包来修复安装路径,但对于我来说,VS 2019和上面的安装并没有解决问题,因此我能够执行的唯一成功测试是使用Windows资源管理器移动目录
public string GetDesc(string state, string licNum, string date) =>
string.Join("; ", new[]{ "State: " + state, "DL Number: " + licNum, "Date: " + date }
.Where(s => !string.IsNullOrWhiteSpace(s)));