微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

如何解决如何为 XSLT 代码片段配置 CruiseControl 的 C# 版本?

我正在尝试设置一个 CruiseControl.NET 实例,该实例使用包含 C# 片段的自定义 XSLT 显示其部分构建结果。

这曾经适用于另一个实例(其配置不再对我可用 - 我只有原始 XSLT 文件),但当前实例抱怨某些“最近的”C# 关键字,例如 var

这让我觉得 CC.NET 使用的 XSLT 处理器目前使用的是旧的 C# 编译器。不幸的是,我找不到有关如何修改该行为的任何提示或文档。

CC.NET 中是否有任何选项可以确定 XSLT 处理器使用哪个 C# 语言版本/编译器?

解决方法

我对 CruiseControl 一无所知,但在纯 .NET 中我认为您需要添加 NuGet 包 https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/3.6.0 然后在您的 App.config 中您需要声明 CodeDom 部分以使用特定的 C# 语言版本

<system.codedom>
    <compilers>
  <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Version=3.6.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" />

要获得 XslCompiledTransform,请使用较新的 C# 编译器/CodeDom。

https://stackoverflow.com/a/63293441/252228 中描述了一个问题,即“将 \roslyn 子目录移动到 \bin\roslyn”,因为编译器是在 bin\roslyn 中查找的,而编译器安装在 roslyn 中。

,

最后,结果是:

  • 将 CC.NET 定位到最新的 .NET 版本
  • 在 IIS 中配置 AppPool 以使用 .NET 4 和
  • 通过编写类似 Web.config 的内容,在 CC.NET 网络仪表板的 <compilation defaultLanguage="c#" targetFramework="4.7.2"/> 文件中明确目标版本

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。